我试图以相当通用的方式构造一些对象。有些对象具有构造函数参数,其他则不具备。传递并执行具有不同参数签名的函数
我想要实现的是返回某种构建函数,如果需要我可以提供构造函数参数。
我知道我可以有可选的参数传递下来,但在我的真实场景中,有几个图层,我厌恶添加可选参数的层次结构。
我不太喜欢部分应用程序/ currying,但我可以在这里使用它,如果是这样,如何?
下面是一些示例代码 - 这不会起作用 - 尝试并解释更多我之后的内容。
public void Main()
{
dynamic buildClass = ClassBuilder<BaseClass>(true);
// ideally I'd like to be able to supply the constructor data
// here
var theClass = buildClass(???)
}
public Func<???, TClass> ClassBuilder<TClass>(bool flag) where TClass : BaseClass
{
// obviously this won't work since the delegates have different
// signatures
if (flag) return() => GetClassA();
return (x) => GetClassB(x);
}
public object GetClassA()
{
return new ClassA();
}
public object GetClassB(string param)
{
return new ClassB(param);
}
public class BaseClass {}
public class ClassA : BaseClass {}
public class ClassB : BaseClass
{
private string _param;
public ClassB(string param)
{
_param = param;
}
}
许多THX
小号
如果你能做到这一点,请张贴您的代码 – netaholic