我試圖以相當通用的方式構造一些對象。有些對象具有構造函數參數,其他則不具備。傳遞並執行具有不同參數簽名的函數
我想要實現的是返回某種構建函數,如果需要我可以提供構造函數參數。
我知道我可以有可選的參數傳遞下來,但在我的真實場景中,有幾個圖層,我厭惡添加可選參數的層次結構。
我不太喜歡部分應用程序/ 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