public interface ISomeDTOInterface
{
...
}
public class SomeDTOClass : ISomeDTOInterface
{
...
}
public interface DataStoreChanges<T>
{
IEnumerable<T> data {get;}
IEnumerable<Guid> removedItems {get;}
IEnumerable<Guid> newItems {get;}
IEnumerable<Guid> modifiedItems {get;}
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个期望的方法
DataStoreChanges<ISomeDTOInterface>
Run Code Online (Sandbox Code Playgroud)
,所以我尝试传递一个实例
DataStoreChanges<SomeDTOClass>,它会生成一个类型错误.它不会让我垂头丧气接口:)所以这里有什么不对.
在C#4中,您可以使界面协变.为此,请将接口声明更改为:
public interface DataStoreChanges<out T>
Run Code Online (Sandbox Code Playgroud)
否则,您可以使方法通用并添加相关的类型约束.
void SomeMethod<T> (DataStoreChanges<T> x) where T : ICommonInterface
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |