![](/img/trans.png)
[英]error CS0117: 'BindingFlags' does not contain a definition for 'GetProperty'
[英]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在单独的程序集中定义,但是:
尝试设置MyObjectInterface之前强制转换为A
我已经尝试了所有我能想到的。 在我脱掉更多头发之前,请帮忙。
编辑我也无法通过创建测试应用程序来重现错误,这就是为什么我在这里以及为什么感到沮丧的原因。
@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中定义的类型时,这才是问题。 这将是以下情况之一:
您将需要从Assembly1添加对Assembly3的引用才能进行编译。
_____________ _____________ _____________
| Assembly1 |references | Assembly2 |references | Assembly3 |
| -|------------|-> -|--------------|-> |
| | | public | | IObject |
| |references | IObject | | |
| -|------------|------------|--------------|-> |
| | | | | |
------------- ------------- -------------
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.