use*_*543 2 c# generics inheritance interface
有可能实现这样的事情吗?我在类SomeClass的声明中遇到此代码的问题.
我收到的例外情况是:
'WindowsFormsApplication1.SomeClass'没有实现接口成员'WindowsFormsApplication1.IB.SomeGetter'.'WindowsFormsApplication1.SomeClass.SomeGetter'无法实现'WindowsFormsApplication1.IB.SomeGetter',因为它没有匹配的返回类型'WindowsFormsApplication1.MyClass'.
我的代码:
public interface IA
{ }
public interface IB
{
MyClass<IA> SomeGetter { get; }
}
public class A : IA
{ }
public class MyClass<T>
where T : IA
{ }
public class SomeClass : IB
{
public MyClass<A> SomeGetter
{
get { return new MyClass<A>(); }
}
}
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
要实现这一点,您需要引入一个接口(MyInterface)来使用协方差:
public interface IA
{ }
public interface IB
{
MyInterface<IA> SomeGetter { get; }
}
public class A : IA
{ }
public interface MyInterface<out T>
where T : IA
{ }
public class MyClass<T> : MyInterface<T> where T : IA
{ }
public class SomeClass : IB
{
public MyInterface<IA> SomeGetter
{
get { return new MyClass<A>(); }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |