【发布时间】:2016-06-11 10:54:05
【问题描述】:
我正在尝试使用以下代码实现泛型类:
interface IBasicInput<T> where T : InputOutputConfig
{
void Configure<T>(ConfigurationDictionary<T> conf) where T : InputOutputConfig;
}
public class ConfigurationDictionary<T> : Dictionary<string,T> where T : InputOutputConfig
{
}
public abstract class InputOutputConfig
{
}
public class SpecificInputConfig : InputOutputConfig
{
}
public class GenericInput<T> : IBasicInput<T> where T : InputOutputConfig
{
ConfigurationDictionary<T> configuration;
public GenericInput()
{
configuration = null;
}
public void Configure<T>(ConfigurationDictionary<T> _conf) where T : InputOutputConfig
{
configuration = new ConfigurationDictionary<T>();
foreach (KeyValuePair<string,T> kvp in _conf)
{
}
}
}
问题是configuration = new ConfigurationDictionary<T>(); 产生错误。
错误 CS0029 无法将类型“ConfigurationDictionary [GenericsTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]”隐式转换为“ConfigurationDictionary [GenericsTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]”
这条消息对我来说没有意义,因为它基本上说它不能将“typeA”转换为“typeA”。有人能解释一下这段代码有什么问题吗?
【问题讨论】:
-
您的问题是因为您在
Configure方法的范围内有两个名为T的泛型类型参数
标签: c#