【发布时间】:2014-05-23 18:22:25
【问题描述】:
我有一组配置对象,它们的构造函数都采用相同的参数。是否可以将构造函数分配给 Func 或类似的东西,以便可以以通用方式调用构造函数?
例如:
public class FooConfig : ConfigBase {
public FooConfig(int a) { ... }
}
public class BarConfig : ConfigBase {
public BarConfig(int a) { ... }
}
在调用代码中:
Func<int, ConfigBase> fooConfigCtr = FooConfig.FooConfig; // Obviously this doesn't work
FooConfig fooConfig = (FooConfig) fooConfigCtr(12345);
调用代码示例不是为了展示实际使用,只是为了说明为什么我在这种情况下使用 Func 有困难。
我发现的一种解决方法是在每个类上提供一个具有相同签名的静态工厂方法,并调用一个私有构造函数。但是,它有点不理想。
【问题讨论】:
-
出于好奇,使用常规构造函数本身有什么问题?
-
在调用代码中,我们希望以通用的方式调用构造函数,这需要将构造函数分配给Func或将工厂方法分配给Func。
标签: c# reflection function-pointers func