我有一个称为 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/