Я получаю сообщение об ошибке:
«Namespace.A» не содержит определения для «MyObjectInterface» и метода расширения «MyObjectInterface», принимающего первый аргумент типа ...
Я смотрел на это и это и, похоже, ни один из них не подходит.
Код выглядит так:
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 определен в отдельной сборке, но:
- IObject находится в отдельной сборке / пространстве имен
- База и A находятся в одной сборке / пространстве имен, каждое с правильными директивами
- Реализация находится в третьем отдельном пространстве имен сборки, также с правильными директивами использования.
Приведение к A перед попыткой установить MyObjectInterface не работает
- В частности, я пытаюсь установить значение MyObjectInterface для фиктивного объекта (хотя вместо этого я создал фальшивку)
Я перепробовал все, что мог придумать. Пожалуйста, помогите, прежде чем я потеряю больше волос.
редактировать
Я не могу воспроизвести ошибку, создав тестовое приложение, поэтому я здесь и поэтому разочарован.
@ Рид Копси: / * что-то * / является либо NUnit.DynamicMock (IMailer) .MockInstance, либо созданным мной поддельным объектом, который наследуется от IObject и просто возвращает стандартные значения.
@ Преет Сангха: Я проверил, и ни у одной другой сборки, на которую есть ссылка, нет определения для IObject (в частности, это называется IMailer).
Дело в том, что intellisense забирает свойство, но когда я компилирую, я получаю CS0117. Я могу даже «перейти к определению» в реализации, и это приведет меня туда, где я его определил.