Scénario estSur covariance et contravariance
public interface IRow
{
int Id { get; set; }
string Name { get; set; }
}
public class ARow : IRow
{ ... }
public class BRow : IRow
{ ... }
public class RowCollection<T> : Collection<T> where T : IRow
{ }
public interface ITable<T> where T : IRow
{
RowCollection<T> DataRows { get; }
int Id { get; set; }
string Name { get; set; }
}
public class ATable : ITable<ARow>
{
public RowCollection<ARow> DataRows
{
get;
set;
}
}
public class BTable : ITable<BRow>
{
public RowCollection<BRow> DataRows
{
get;
set;
}
}
Quand je fais quelque chose comme ça
List<ITable<IRow>> lt = new List<ITable<IRow>>();
ITable<IRow> ads = new ATable();
je suis erreur, je sais que quelque chose à voir avec covariance et contravariance si quelqu'un peut me aider à surmonter cette erreur sera très appréciée. Il est certain que j'ai besoin d'en savoir plus sur ce sujet, mais je m'attends à une aide rapide pour corriger ce problème/scénario en premier.
Cordialement, San
également porté: [Comprendre Covariance et Contravariance en C# 4.0] (http://stackoverflow.com/questions/1724919/understanding-covariance-and-contravariance-in-c-sharp-4-0), [Comprendre les interfaces covariantes et contravariantes en C#] (http://stackoverflow.com/questions/2719954/understanding-covariant-and-contravariant-interfaces-in-c-sharp), [Pourquoi ne puis-je pas affecter une liste à une liste ?] (http://stackoverflow.com/questions/4652858/why-cant-i-assign-a-listderived-to-a-listbase); et il y en a beaucoup d'autres. –
poke
Si vous connaissez déjà le terme de ce qui vous cause des problèmes (covariance et contravariance), alors montrez quelques efforts et regardez les nombreuses questions * existantes * qui auraient dû vous être suggérées lorsque vous avez commencé à écrire cette question, et montrez que votre problème est en effet basé sur les connaissances que vous avez déjà acquises à l'aide de ces questions. – poke
lire ma question complètement ... j'ai reconnu que c'est sur la variance co et la contravariance. Aussi mentionné que je suis à la recherche d'une aide rapide/solution et en apprendra plus sur ce sujet. – sanoj