假設我有一個名爲SuperClass
的類和一個名爲的類。從SuperClass
延伸。在SuperClass
的定義裏面,我有一個方法,試圖檢查this
類是否爲的一個實例。正確的方法來查看超類的當前實例是否是超類內的子類
if (this.GetType() == typeof(SubClass))
log.Info("This SuperClass is a SubClass");
else
log.Info("This SuperClass is NOT a SubClass");
這有效,但我總是非常懷疑,當某些工作正常(特別是在第一次嘗試)。我想確保這是最好的方式(最安全,最可讀,正確)做我想做的事。
假設還有一個'OtherSub:SuperClass'。你真的問「這是一個」子類「嗎?」或「這完全是一個'SuperClass',而不是它的任何部分?」 –
必須做這樣的檢查意味着您可能在某個地方的類結構中存在設計問題。這些類的設計應該使基類不需要知道它的子類。 –