【发布时间】:2014-01-26 18:09:23
【问题描述】:
我创建的显式接口存在问题,并且出现异常,
“x”不包含“y”的定义,并且找不到接受“x”类型的第一个参数的扩展方法“y”
我有一系列的课程。基类:
public interface IFactoryResponse
{
object instance { get; set; }
string instanceconfig { get; set; }
}
显式实现它的类:
public class FactoryResponseImpl : IFactoryResponse
{
object IFactoryResponse.instance {
get { return ((IFactoryResponse)this).instance; }
set { ((IFactoryResponse)this).instance = value; }
}
string IFactoryResponse.instanceconfig {
get { return ((IFactoryResponse)this).instanceconfig; }
set { ((IFactoryResponse)this).instanceconfig = value; }
}
}
在另一个课程中,我得到了上述错误。 Visual Studio 可以找到接口和类,但它无法解析实例属性。我在这里想念什么。我可能遗漏了更精细的显式继承规则之一。
if (facconfig.useabstract) {
response.instance = Activator.CreateInstance(m_entassembly.GetType(entconfig.Classname, true, true));
response.instanceconfig = facconfig.config;
} else {
Assembly assem = Assembly.LoadFrom(facconfig.assemblyfile);
object Obj = Activator.CreateInstance(assem.GetType(facconfig.Classname, true, true));
response.instance = Obj;
response.instanceconfig = facconfig.config;
}
【问题讨论】:
-
接口是否定义在同一个程序集中?
-
确实是在同一个程序集中定义的
-
您需要将对象转换为该接口,然后您才能看到属性
-
这不是等待发生的堆栈溢出异常吗?
return ((IFactoryResponse)this).instance; -
如果我错了,请纠正我,但看起来您的财产自称。
标签: c# class interface explicit-implementation