我对.net泛型有疑问。请考虑以下代码:
public abstract class Test<TKey>
{
TKey Key { get; set; }
}
public class Wrapper<TValue, TKey>
where TValue : Test<TKey>
{
public TValue Value { get; set; }
}
现在,在使用此代码时,我可以执行以下操作:
Wrapper<Test<int>, int> wrapper = new Wrapper<Test<int>, int>();
必须提供两次int类型参数。是否可以修改Wrapper定义,要求TValue为泛型类型,并使用这个嵌套的TKey类型参数的泛型类型参数?
答案 0 :(得分:1)
我想这取决于您是否真的需要将Value
属性公开为TValue
来自TValue
的{{1}}。换句话说,您是否需要来公开仅对派生类可用的功能,或者您是否可以简单地公开具有基类所有功能的Test<T>
?
在后一种情况下,您可以将类定义简化为:
Test<T>
至于您正在寻找的精确功能:我不相信当前版本的C#中提供的任何内容。
那就是说,你的另一种选择可能是将你的public class Wrapper<TKey>
{
public Test<TKey> Value { get; set; }
}
类本身用作基类:
Wrapper