所以我有一个类,里面有一个包装类,如下所示:
public class RandomClass<TK, TV>
{
internal class RandomClassWrapper<TK, TV> : RandomClass<TK, TV> {}
}
现在这样做的原因是,RandomClassWrapper 正在使用new
关键字来覆盖 RandomClass 中某些方法的行为。这是因为我只希望我的库能够访问这些功能。
它还需要修改RandomClass中的一些私有变量,这也是它嵌套的原因。
但是,当我想初始化它时,我必须去
var rc = new RandomClass<int, int>.RandomClassWrapper<int, int>();
为什么首先<int, int>
需要它?为什么不能这样写:
var rc = new RandomClass.RandomClassWrapper<int, int>();
有什么办法可以避免输入额外的<int, int>
内容,这些内容可能会变成:<Dictionary<string, nameofclass>, List<thisistoolong>>
这有点夸张,但你明白我的意思。必须将这些类型放置两次是对空间的巨大浪费。
任何人都可以提出不同的方法吗?
由于这有助于稍微澄清问题,因此我将注意以下两条评论:
那么,您的问题是“为什么编译器不能从 RandomClass 的参数推断 RandomClassWrapper 的通用参数? – Ed S. 3 分钟前
@EdS。这是问题的一个组成部分,是的。另一个是:由于它不能,是否有另一种方法/黑客可以清理它并避免必须输入两次通用参数。– 凯撒刚刚