繁体   English   中英

错误CS0117:Namespace.A不包含接口的定义

[英]Error CS0117: Namespace.A does not contain definition for Interface

我收到错误消息:


'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位于单独的程序集/名称空间中
    • Base和A在相同的程序集/名称空间中,每个具有正确的using指令
    • 实现是在第三个单独的程序集命名空间中进行的,也使用正确的using指令。
  • 尝试设置MyObjectInterface之前强制转换为A

  • 具体来说,我正在尝试将MyObjectInterface的值设置为模拟对象(尽管我创建了一个假对象,但无济于事)

我已经尝试了所有我能想到的。 在我脱掉更多头发之前,请帮忙。

编辑我也无法通过创建测试应用程序来重现错误,这就是为什么我在这里以及为什么感到沮丧的原因。

@Reed Copsey:/ *某些* /是NUnit.DynamicMock(IMailer).MockInstance或我创建的从IObject继承并仅返回固定值的Fake对象。

@Preet Sangha:我检查了所有引用的程序集,但都没有为IObject定义定义(具体地说,它称为IMailer)。

事情是,Intellisense获得了Property,但是当我编译时,我得到了CS0117。 我什至可以在实现中“转到定义”,这将我带到定义它的位置。

该错误与您引用使用另一个程序集中定义的类型的程序集且未引用该依赖项的依赖项时遇到的错误保持一致。

要解决此问题,请添加对包含IObject的程序集的引用,作为对包含Implementation的项目的引用。

这是小图。 如果Assembly2公开了Assembly3中定义的类型,则ASsembly1也必须引用Assembly3。 以下情况将不起作用:

_____________             _____________               _____________
| Assembly1  |references  | Assembly2  |references    | Assembly3  |
|           -|------------|->         -|--------------|->          |
|            |            | public     |              | IObject    |
|            |            |  IObject   |              |            |
|            |            |            |              |            |
-------------             -------------               -------------

仅当可通过Assembly2访问Assembly3中定义的类型时,这才是问题。 这将是以下情况之一:

  • Assembly2中定义的类型派生自Assembly3中的类型。
  • Assembly2中定义的方法使用Assembly3中的类型作为返回类型或参数。
  • Assembly2中定义的类型将Assembly3中的类型公开为属性或公共字段。

您将需要从Assembly1添加对Assembly3的引用才能进行编译。

_____________             _____________               _____________
| Assembly1  |references  | Assembly2  |references    | Assembly3  |
|           -|------------|->         -|--------------|->          |
|            |            | public     |              | IObject    |
|            |references  |  IObject   |              |            |
|           -|------------|------------|--------------|->          |
|            |            |            |              |            |
-------------             -------------               -------------

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM