[英]Processing parameters before calling the base constructor
是否可以在將參數傳遞給基本構造函數之前進行處理?
如:
A --> B
其中A是抽象類,B是子類。
A的構造函數如下所示:
Protected A (MyObject myObject)
B的構造函數是這樣的:
Public B (string objectName)
我希望它像這樣
Public B (String objectName) : base (MyObject myObject)
{
myObject = new MyObject (objectName);
}
如果您想做一些瑣碎的事情(不自然地適合於可以內聯到base
調用中的單個表達式),那么唯一的方法就是在static
方法中進行操作,例如:
public B (string objectName) : base (SomethingComplex(objectName))
{
//...
}
static MyObject SomethingComplex(string objectName)
{
// this can now be arbitrarily complex
if(string.IsNullOrWhiteSpace(objectName))
throw new ArgumentException("objectName")
// etc
return new MyObject(objectName);
}
是的,但僅作為一個表達式:
public B(String objectName) : base(new MyObject(objectName)) {
}
請注意,由於此操作在構造類之前運行,因此它無法訪問實例成員。
如果要運行多個表達式(例如,參數驗證),則可以調用靜態方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.