gpt4 book ai didi

c# - 通用类和向下转型(类型转换)

转载 作者:行者123 更新时间:2023-12-02 19:42:07 25 4
gpt4 key购买 nike

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 中,您可以使接口(interface)协变。为此,请将接口(interface)声明更改为:

public interface DataStoreChanges<out T>

否则,您可以使该方法通用并添加相关的类型约束。

void SomeMethod<T> (DataStoreChanges<T> x)  where T : ICommonInterface
{
...
}

关于c# - 通用类和向下转型(类型转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com