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;}
}
现在我有一种期望的方法
DataStoreChanges<ISomeDTOInterface>
,因此我尝试传递的实例
DataStoreChanges<SomeDTOClass>
,会产生类型错误。它不会让我垂头丧气到界面:)
所以这怎么了
最佳答案
在C#4中,可以使接口协变。为此,请将接口声明更改为:
public interface DataStoreChanges<out T>
否则,可以使该方法通用,并添加相关的类型约束。
void SomeMethod<T> (DataStoreChanges<T> x) where T : ICommonInterface
{
...
}
关于c# - 通用类和向下转换(类型转换),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4586193/