VB.NET 取当前项目根命名空间
在VB.NET中,可以使用反射来获取当前程序集的入口点类型(通常是模块或者主类),然后从这个类型的Assembly信息中获取定义它的程序集的根命名空间。以下是一个获取当前项目根命名空间的方法示例:
请注意,这个方法假设您的项目具有一个AssemblyTitleAttribute,并且这个Title属性反映了项目的根命名空间。如果没有设置AssemblyTitle,或者设置的方式不符合预期,那么可能需要调整代码来适应具体的项目结构。
vbnet
Dim currentNamespace As String = GetCurrentRootNamespace()
MsgBox("当前项目根命名空间:" & currentNamespace)
Function GetCurrentRootNamespace() As String
'取根命名空间
' 获取入口点类型
Dim assembly As Assembly = Assembly.GetExecutingAssembly()
Dim entryType As Type = Assembly.GetEntryAssembly().GetTypes()(0)
' 获取当前程序集
assembly = Assembly.GetAssembly(entryType)
' 获取当前程序集的属性
Dim attributes As AssemblyTitleAttribute() = assembly.GetCustomAttributes(GetType(AssemblyTitleAttribute), False)
' 如果定义了AssemblyTitleAttribute,则使用它的Title作为根命名空间
If attributes.Length > 0 Then
Dim title As String = attributes(0).Title
Dim nsIndex As Integer = title.IndexOf(".")
If nsIndex > 0 Then
Return title.Substring(0, nsIndex)
End If
End If
' 如果没有定义AssemblyTitleAttribute,则从入口点类型的全名中提取根命名空间
Dim fullName As String = entryType.FullName
If fullName IsNot Nothing Then
Dim nsIndex As Integer = fullName.IndexOf(".")
If nsIndex > 0 Then
Return fullName.Substring(0, nsIndex)
End If
End If
Return String.Empty
End Function