Problème avec l'interface de mise en œuvre dans les classes partielles
J'ai une question concernant un problème avec L2S, généré automatiquement DataContext et l'utilisation de Classes Partielles. J'ai une abstraction de mon datacontext et pour chaque table que j'utilise, je suis l'implémentation d'une classe avec une interface. Dans le code ci-dessous, vous pouvez voir que j'ai de l'Interface et des deux classes partielles. La première classe est juste là pour s'assurer de la classe dans l'auto-générés datacontext inherets Interface. Les autres générée automatiquement classe permet de s'assurer de la méthode à partir de l'Interface est mise en œuvre.
namespace PartialProject.objects
{
public interface Interface
{
Interface Instance { get; }
}
//To make sure the autogenerated code inherits Interface
public partial class Class : Interface { }
//This is autogenerated
public partial class Class
{
public Class Instance
{
get
{
return this.Instance;
}
}
}
}
Maintenant, mon problème est que la méthode mise en œuvre dans la classe générée automatiquement donne l'erreur suivante:
-> Propriété "Instance" ne peut pas mettre en œuvre la propriété à partir de l'interface " PartialProject.objets.L'Interface". Le Type doit être " PartialProjects.objets.L'Interface". <-
Aucune idée de comment cette erreur peut être résolu? Gardez à l'esprit que je ne peux pas modifier quoi que ce soit dans le code généré automatiquement.
Merci d'avance!
OriginalL'auteur Bas | 2010-04-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez résoudre ce problème par la mise en œuvre de l'interface explicite:
A voté. Merci pour la solution sympa. J'ai presque "craqué" ma tête à essayer de faire un travail autour des limitations imposées par les interfaces.
Juste au cas où quelqu'un se jette dans le message d'erreur suivant après la mise en œuvre de la solution ci-dessus look here: le modificateur "public" n'est pas valide pour cet article - essentiellement de la suppression de toutes les modificateurs d'accès que ces propriétés seront obligés comme privé (ce qui est logique quand on y pense).
OriginalL'auteur JJoos
Types de retour ne sont pas covariant de C#. Comme vous ne pouvez pas modifier le code généré automatiquement la seule solution que je vois est de la modification de l'interface:
Et de changer votre classe partielle en conséquence:
OriginalL'auteur helium