Genric List

16/04/2009 - 12:07 von Stephan | Report spam
Hallo zusammen,

warum geht folgender Ausdruck nicht und wie kann ich ein generic in
eine genric liste packen ?


Foo(List<BaseEntity<TId>> list){...}

wobei:
public abstract class BaseEntity<TId> : INotifyPropertyChanged,
ICloneable{...}


Danke und Grüße
Stephan
 

Lesen sie die antworten

#1 Frank Dzaebel
16/04/2009 - 12:44 | Warnen spam
Hallo Stephan,

warum geht folgender Ausdruck nicht und wie kann
ich ein generic in eine genric liste packen ?
Foo(List<BaseEntity<TId>> list){...}



evtl. hilft folgender Code, der nur zur
Veranschaulichung dient:

private void Form1_Load(object sender, EventArgs e)
{
List<BaseEntity<string>> liste = new List<BaseEntity<string>>();
SpecialEntity<string> se = new SpecialEntity<string>();
liste.Add(se); Foo(liste);
}

void Foo<T>(List<BaseEntity<T>> list)
{
foreach (BaseEntity<T> be in list)
if (be is SpecialEntity<T>)
MessageBox.Show(((SpecialEntity<T>)
be).Alter.ToString());
}


public abstract class BaseEntity<T> :
INotifyPropertyChanged, ICloneable
{
public event PropertyChangedEventHandler PropertyChanged;

public object Clone()
{
throw new NotImplementedException();
}
}

public class SpecialEntity<T> : BaseEntity<T>
{
public SpecialEntity()
{
this.Alter = 42;
}
public int Alter { get; set; }
}
_________

Bei diesem Thema kann sich ggf. spàter die Kenntnis
der aktuellen Beschrànkungen von Ko- und Kontravarianz
gegenüber den in C# 4.0 aufgehobenen als hilfreich erweisen.

[Kovarianz und Kontravarianz – Wikipedia]
http://de.wikipedia.org/wiki/Kontravarianz_(Informatik)

[Charlie Calvert's Community Blog : LINQ Farm: Covariance and Contravariance
in C# 4.0]
http://blogs.msdn.com/charlie/archi...-2010.aspx


ciao Frank
Dipl. Inf. Frank Dzaebel [MCP, MVP C#]
http://Dzaebel.NET

Ähnliche fragen