[英]Why does accessing my Storyboard in any way cause a System.Exception?
[英]Why does System.Exception shadow GetType()
在嘗試比較兩個dll進行API更改時,一位同事注意到某些類有兩個GetType()方法。
經過深入檢查,結果發現System.Exception
陰影GetType():
// this method is required so Object.GetType is not made virtual by the compiler
public new Type GetType()
{
return base.GetType();
}
我看到System.Exception
實現了_Exception,但是我沒有看到為什么必須顯式地遮蔽GetType的原因,因為它不會是虛擬的。
那么為什么System.Exception陰影GetType()?
我不確定它是否與尖叫所提到的COM有任何關系,但它肯定與不使Object.GetType()虛擬有關。
尖叫的答案中的第二個鏈接提到了它,但是對另一個問題的回答使得它更清楚:
CLR要求實現接口方法的所有方法都必須是虛擬的( Ecma 335 Partition II Section 12.1)。
- 如果基類中的方法不是虛擬的,而是在同一個程序集中,那么偷偷摸摸的編譯器實際上使它成為虛擬和最終的 。
如果System.Exception
沒有影響GetType(),則Object的GetType()實現將由編譯器自動轉換為虛方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.