Neulich schnappte ich eine Erfreulichkeit bei Stackoverflow auf.
Zuerst mal die Unerfreulichkeit: Vb.Net-Module machen ihre Public Member ja ohne Qualifizierung des Modul-Namens sichtbar.
Was ein schlimmes FehlDesign ist, denn dadurch bietet Intellisense diese Member an, und das ist nicht lustig, wenn man sich mit der Zeit viele Extension-Functions zu verschiedensten Zwecken angelegt hat, und jede dieser Methoden (das können hunderte sein) ist zugegen, wann immer Intellisense den DropDown anzeigt.
So, jetzt aber die Erfreulichkeit: Man kann das ganze Extension-Modul aus der Intellisense "heraus-attributieren" - ich zeig einfach mal gleich 2 Module, eines davon entsprechend attributiert:
Der Screenshot zeigt, was ich meine:
Beides sind funktionierende Extension-Functions, aber
Zuerst mal die Unerfreulichkeit: Vb.Net-Module machen ihre Public Member ja ohne Qualifizierung des Modul-Namens sichtbar.
Was ein schlimmes FehlDesign ist, denn dadurch bietet Intellisense diese Member an, und das ist nicht lustig, wenn man sich mit der Zeit viele Extension-Functions zu verschiedensten Zwecken angelegt hat, und jede dieser Methoden (das können hunderte sein) ist zugegen, wann immer Intellisense den DropDown anzeigt.
So, jetzt aber die Erfreulichkeit: Man kann das ganze Extension-Modul aus der Intellisense "heraus-attributieren" - ich zeig einfach mal gleich 2 Module, eines davon entsprechend attributiert:
VB.NET-Quellcode
- Imports System.Runtime.CompilerServices
- Imports System.ComponentModel
- <EditorBrowsable(EditorBrowsableState.Never)> _
- Public Module InvisibleExtensions
- <Extension()> _
- Public Function StringExtension1(s As String) As String
- Return "InvisibleExtensions.StringExtension1"
- End Function
- End Module
- Public Module VisibleExtensions
- <Extension()> _
- Public Function StringExtension2(s As String) As String
- Return "VisibleExtensions.StringExtension2"
- End Function
- End Module
Beides sind funktionierende Extension-Functions, aber
StringExtension1()
fährt im Gegensatz zu StringExtension2()
nicht inne Intellisense herum.Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()