Gleich in die Vollen:
Ich habe eine Liste<T> und ein Item. Beide Leite ich ab, weil ich auf speziellen Liste spezielle Initialisierungen der Items brauche. Nun klappt aber das Typecasting im abgeleiteten Item von einem Verweis auf die zugehörige Liste nicht.
Kann mir wer dazu was konkretes sagen?
Hier mein Code:
Code:
using System.Collections.Generic;
namespace MyNamespace
{
public class MyBaseList<T> : List<T>, INotifyPropertyChanged
where T : MyBaseItem
{
protected Boolean _init = false;
protected Boolean _modified = false;
protected List<T> _deleteditems = null;
...
}
}
Soweit dürfte das klar sein. Ich brauche nun noch ein Baseitem. Um in der Struktur aber sauber navigieen zu können benötigt mein Item einen Verweis auf die übergeordnete Liste:
Code:
public class MyBaseItem : INotifyPropertyChanged
{
protected MyBaseList<MyBaseItem> _collection = null;
protected Boolean _init = false;
protected Boolean _modified = false;
...
}
Das geht soweit. Nun habe ich jedoch eine abgeleitete Klasse meines BaseItems:
Code:
public class SystemParameterList<T> : MyBaseList<T>
where T : SysParam
{
IDbCommand _savecmd = null;
Boolean _savecmdinit = false;
IDbCommand _deletecmd = null;
Boolean _deletecmdinit = false;
public SystemParameterList()
: base()
{
Trace.WriteLineIf(Logging.TraceLevel.TraceVerbose, "Instance Created");
}
...
}
public class SysParam : MyBaseItem
{
private String _guid = "";
private String _name = "";
private String _value = "";
private ValType _type = ValType.String;
public SystemParameterList<SysParam > Collection
{
get { return (SystemParameterList<SysParam>)_collection; } // genau HIER steigt der Compiler aus
set { _collection = value; }
}
Beim Kommentar gehts in die Hose. Er kann _collection (ist ja vom typ MyBaseList<MyBaseItem>) nicht nach SystemParameterList<SysParam> casten, obwohl SystemParameterList von MyBaseList abgeleitet ist und der SysParam freilich von MyBaseItem abgeleitet ist.
Wie kann ich das auflösen?