簡體   English   中英

在調用基本構造函數之前處理參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM