При исследовании Assembly.GetInterfaces(), я нашел, что метод был Метод MustOverride. Который в моем понимании означает, что он не имеет действия по умолчанию для производных классов. Его просто сигнатура в основном абстрактного метода. Тем не менее, я все еще могу использовать его для типа, и он вернет все реализованные интерфейсы без написания кода для метода MustOverride.MustOverride получается как виртуальный метод?
Где находится этот код, проскользнувший в метод MustOverride? Я каким-то образом косвенно переопределял его просто путем вызова метода на созданном типе?
Этот вопрос является чисто основанием для изучения и открытия, я не пытаюсь ничего делать, кроме понимания границ языка.
Вот код, который я использовал:
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim t As Type
Debug.WriteLine(GetType(Integer))
t = GetType(Integer)
Dim interfaceArr As Type() = t.GetInterfaces
For i As Integer = 0 To interfaceArr.Length - 1
Debug.WriteLine(interfaceArr(i))
Next
End Sub
End Class
Output Is:
System.IComparable
System.IFormattable
System.IConvertible
System.IComparable 1[System.Int32]
System.IEquatable 1[System.Int32]
Этот вопрос описывает MustOverride более подробно. http://stackoverflow.com/a/1686872/1157215 – Ccorock
Что именно вы подразумеваете под «Я все еще могу использовать его для типа, и он вернет все реализованные интерфейсы». Можете ли вы предоставить более подробную информацию или пример того, что вы имеете в виду? –
Спасибо. И какой результат вы видите, чего не ожидали увидеть? –