【发布时间】:2025-11-29 13:40:01
【问题描述】:
我有一个带有两个通用方法签名的非通用接口。
interface IDataContainer
{
T GetValue<T>();
void SetValue<T>(T value);
}
然后我有一个实现 IDataContainer 的泛型类
public class DataContainer<T>: IDataContainer
{
private T _value;
#region IDataContainer Members
public T GetValue<T>()
{
return _value;
}
public void SetValue<T>(T value)
{
_value = value;
}
#endregion
}
我收到一个错误,提示无法在已实现的 GetValue 和 SetValue 方法上将类型 T 隐式转换为 T。
有没有办法解决这个问题?某种类型的平等约束?有没有更好的办法?
我知道我可以通过将 IDataContainer 设为 IDataContainer<T> 来使其成为泛型,但是当 T 并不总是相同类型时,我无法拥有 IDataContainers 列表。
【问题讨论】: