我已经退缩了一下。这是我所拥有的简化版本(在C#中):
class OuterClass
{
private class BadClass
{
private int Data;
public BadClass()
{
Data = 0;
...
}
}
T Build<T>(Object Input)
{
T x = new T();
...
return x;
}
void SomeMethod()
{
BadClass a = Build<BadClass>(anObject);
...
}
...
}
我的问题是,我现在必须根据正在创建BadClass实例的OuterClass实例更改Data的初始值。通常,我只会使用带有参数的BadClass构造函数:
public BadClass(int Data)
{
this.Data = Data;
...
}
但是我在几种泛型类型中使用BadClass,所以我必须有一个无参数的BadClass构造函数。太糟糕了,我不能做这样的事情:
Build<BadClass(5)>(anObject);
因此,当我无法将参数传递给构造函数时,如何给构造函数运行时信息?
是否可以创建BadClass类型的运行时实例,为其提供所需的信息,然后在我的泛型类型中使用它?
编辑:我使用列表作为示例泛型类型,但没有完全表达我的困境的深度...
如果我使用BadClass,我可以在Build中创建一个测试来调用init函数,但这很hacky。我希望找到一种不太麻烦的方法。
最佳答案
如果需要具有多个泛型的BadClass类型,则可以通过更改继承树来实现:
class OuterClass {
private class BadClassBase {
// whatever BadClass does
}
private class BadClass : BadClassBase {
public BadClass(T item) {
...
}
}
}
不确定这是否是您要的东西,但是您可以创建List 。