有沒有辦法讓一個對象回頭參照它的調用者。可以指定'父對象'必須作爲參數傳入(如ChrisF所建議的那樣),但不能保證傳入的對象與實際的調用者有任何關係。但是,如果您的目標是將自己「附加」到某個對象,則此方法將確保您擁有要附加的有效對象。
一個有用的特技其可在VB.Net,但不是C#,是有其具有一些特定類型的字段的基類型,並設置該字段來在其構造傳遞的值。在VB.net中,在對基級構造函數的調用和構造函數中的下一個語句之間執行派生類型字段初始化。因此,可以這樣做:
Class ParamBase(Of T)
Protected BaseParam As T
Sub New(TheParam As T)
BaseParam = Param
End Sub
End Class
Class MyThing
Inherits ParamBase(Of MyThingParent)
' Sample initialization
Dim MyTitle = BaseParam.Title ' Assuming MyThingParent has a title property
' Other initializations can be done similarly
Sub New(MyParent As MyThingParent)
MyBase.New(MyParent)
' Do remainder of constructor
End Sub
End Class
方便的小動作。
我不這麼認爲,但想確定。我想我已經找到了解決我的問題的方法。我會在Ravens/Falcons比賽結束後發佈更多內容。 – Kumba 2010-11-12 01:28:28
所以我做的是編碼一個「最大」值(我基本上建立靜態類來模仿.NET枚舉),並用它來檢查一個數組作爲構造函數中的第一項。如果數組不爲空,並且已經等於「最大」值,那麼我可以拋出異常。這個想法是枚舉是固定的,並且不會經常改變,所以使它們成爲編譯時的東西是明智的。當他們需要更新時,程序員(我現在)有責任添加新項目並增加「最大」值。這樣,在類之外添加的枚舉將始終失敗。 – Kumba 2010-11-13 05:54:52