2010-03-25 8 views
0

Je suis en train de créer un modèle de données pour WCF basée hors des interfaces de mon modèle d'objet de base, mais je vais avoir du mal avec certaines des associationsObject Model Contrats

Actuellement, j'ai dans mes données de base Toutefois, lorsque je définis l'interface IA, j'obtiens des erreurs de compilation en disant que A n'implémente pas tout IA. Voici l'interface

public interface IA<BType> where BType: IB { 
    string name {get; set;} 
    IEnumerable<Btype> children {get;} 
} 

Pourquoi une instance de A ne peut-elle pas être passée en tant que référence IA, étant donné ces définitions de classe et d'interface?

Répondre

1

erreur de compilation parce public EntitySet<B> children n'est pas mise en œuvre de IEnumerable<Btype> children {get;} (.net < version 4.0 ne supporte pas covariance \ contravariance)

+0

Ce n'est pas tout à fait correct. Co-et contravariance a été ajouté à. NET avec génériques dans 2.0. Il n'était pas supporté en C# jusqu'à la version 4.0, mais .NET le supportait très bien, et, par exemple. Eiffel.NET l'utilise. –

+0

Donc vous dites que cela se compilera dans .net 4.0? –