oil*_*lio 1 c# generics constructor
我已经支持自己进入了一个角落.这是我所拥有的简化版本(在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);
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我现在必须根据创建BadClass实例的OuterClass实例更改Data的初始值.通常我会使用带有参数的BadClass构造函数:
public BadClass(int Data)
{
this.Data = Data;
...
}
Run Code Online (Sandbox Code Playgroud)
但是我在几个泛型类型中使用BadClass,所以我必须有一个无参数的BadClass构造函数.太糟糕了我不能做这样的事情:
Build<BadClass(5)>(anObject);
Run Code Online (Sandbox Code Playgroud)
那么,当我无法将参数传递给构造函数时,如何给出构造函数的运行时信息?
是否可以创建BadClass类型的运行时实例,为其提供所需的信息,然后在我的泛型类型中使用它?
编辑:我使用List作为示例泛型类型但是并没有完全表达我的困境的深度...
我可以在Build中创建一个测试来调用init函数,如果我正在使用BadClass,但这非常hacky .我希望找到一个稍微不那么难看的方法.
创建时List<BadClass>
,您不会创建任何BadClass实例.继续创建一种方式,但是当你创建一个BadClass实例添加到它时,那就是你调用参数化构造函数时:
List<BadClass> a = new List<BadClass>();
a.Add(new BadClass(1));
a.Add(new BadClass(2));
Run Code Online (Sandbox Code Playgroud)
顺便说一下,构建一个BadClass实例取决于哪个OuterClass正在创建它有点代码味道.你想要完成什么?
归档时间: |
|
查看次数: |
1154 次 |
最近记录: |