Je reçois l'erreur:Erreur CS0117: Namespace.A ne contient pas la définition de l'interface
« Namespace.A » ne contient pas une définition pour « MyObjectInterface » et aucune méthode d'extension « MyObjectInterface » accepter un premier argument de type ...
Je l'ai regardé et thisthis et ne semble appliquer.
Le code ressemble à:
public abstract class Base
{
public IObject MyObjectInterface { get; set; }
}
public class A : Base
{
/**/
}
public class Implementation
{
public void Method()
{
Base obj = new A();
obj.MyObjectInterface = /* something */; // Error here
}
}
IObject est défini dans un ensemble séparé, mais:
- IObject est dans un ensemble/espace de nom séparé
- Base et A sont dans le même assemblage/espace de nommage avec des directives d'utilisation correctes
- La mise en oeuvre est dans un troisième espace de noms d'assembly séparé, également avec des directives d'utilisation correctes.
casting à A avant d'essayer de mettre MyObjectInterface ne fonctionne pas
- Plus précisément, je suis en train de définir la valeur de MyObjectInterface à un objet fictif (bien que, j'ai créé un faux lieu sans résultat
J'ai essayé tout ce que je peux penser. S'il vous plaît aider avant de perdre plus de cheveux.
modifier Je ne peux pas reproduire l'erreur en créant une application de test soit, ce qui est la raison pour laquelle je suis ici et pourquoi je suis frustré.
@Reed Copsey:/* quelquechose */est soit un NUnit.DynamicMock (IMailer) .MockInstance, soit un objet Fake que j'ai créé et qui hérite de IObject et qui renvoie juste des valeurs prédéfinies. Sangha: J'ai vérifié et aucun autre assemblage référencé n'a de définition pour un objet IObject (plus précisément, il s'agit d'un IMailer). Il est vrai que IntelliSense capte la propriété, mais quand je compile, je reçois CS0117. Je peux même 'Go To Definition' dans l'implémentation, et cela m'amène à l'endroit où je l'ai défini.
J'ai créé un projet factice, et j'utilise IObject dans un assemblage séparé, et ce code dans un autre. Tout compile bien. Je soupçonne fortement qu'il y a un problème différent qui cause ce problème. Avez-vous confirmé en vous assurant que les références à IObject ne sont pas récupérées d'un autre endroit à partir de la mise en œuvre dont vous avez besoin. –
Quel est le rapport d'erreur pour "Type" et comment "/ * quelquechose * /" est-il défini? Ces deux questions sont essentielles pour vous répondre correctement ... –
pourrait-il être le GAC? – kenny