如何使用接口内的接口启动类

时间:2012-11-05 19:22:29

标签: c# .net interface

如果我有一个界面MyInterface1

interface MyInterface1
{
    ImyGod myproperty { get; set; }
}

如果我有一个课程,请执行以下操作,它会抱怨

class myClass : IMyInterface1
{
    myGod myproperty { get; set; }
}

我应该在myGlass中使用myGod进行处理? 感谢。

2 个答案:

答案 0 :(得分:2)

那是不可能的。为了实现接口,成员的签名必须与接口中定义的签名完全相同。您将需要更改接口或类的实现,以便属性的类型完全匹配。

由于你的属性有一个setter,这意味着,根据接口,你可以将任何对象实现ImyGod到该属性,但由于派生类是键入myGod,它不支持ImyGod的任何其他实现。

您可以使用通用界面,如下所示:

interface MyInterface1<T> where T : ImyGod
{
    T myproperty { get; set; }
}

class myClass : IMyInterface1<myGod>
{
    myGod myproperty { get; set; }
}

这将按预期编译和工作,并且还会阻止有人将someOtherGod实例设置为该属性,但显然无法支持该属性。

答案 1 :(得分:0)

您应该将该属性声明为public:

class myClass : IMyInterface1 
{ 
    public ImyGod myproperty {get; set;} 
}