gpt4 book ai didi

c# - 在 C# 中使用字符串和接口(interface)的字典

转载 作者:行者123 更新时间:2023-11-30 19:12:12 26 4
gpt4 key购买 nike

我有一个称为 IObSrc 的接口(interface),我有几个实现此接口(interface)的类称为 ObSrc1、ObScr2 等。

Interface IObSrc
{
string id;
}

我还有一个名为 IDtSrc 的接口(interface),这个接口(interface)又由几个名为 DtSrc1、DtSrc2 的类实现。

Interface IDtSrc
{
IObSrc getObject();
Dictionary<string,IObSrc> getObjects();
}

当我从 DtSrc1 实现此接口(interface)并从 DtSrc1 返回 ObSrc1 时,没有问题,但是当我返回 Dictionary<string,ObSrc1> 时或 Dictionary<string,ObSrc2> ,我得到类型不匹配的指示。

public class DtSrc : IDtSrc
{
public Dictionary<string,IObSrc> getObjects()
{
Dictionary<string,ObSrc1> val1 = new ...'
...
return val1;
}

}

我该如何解决这个问题。

* 已编辑 *

我还有一个问题,如果一个方法应该返回一个可以随实现而变化的泛型类型怎么办。

示例:

interface IDtSrc<T> where T:IObSrc
{
T ExecuteObject(string objId);
}

这将用作

class DtSrc1 
{
string ExecuteObject(string objId)
{..}
}

class DtSrc2
{
Dictionary<string,string> ExecuteObject(string objId)
{..}
}

也请为此提出正确的程序。

最佳答案

你可以使用带有约束的泛型

interface IDtSrc<T> where T:IObSrc
{
IObSrc getObject();
Dictionary<string,T> getObjects();
}

但是您的 IDtSrc 实现只能返回一种类型的 IObSrc

关于c# - 在 C# 中使用字符串和接口(interface)的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484461/

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