我有一个属性类:
<AttributeUsage(AttributeTargets.Property)> _
Public Class DirectoryAttribute
Inherits Attribute
Private _attribute As String
Public Sub New(ByVal attribute As String)
_attribute = attribute
End Sub
Public ReadOnly Property Attribute As String
Get
Return _attribute
End Get
End Property
End Class
接口和类:
Public Interface IDirentoryEntity
<DirectoryAttribute("Name")> _
Property Name As String
End Interface
Public Interface IOrganizationalUnit
Inherits IDirectoryEntity
End Interface
Public Class OrganizationalUnit
Implements IOrganizationalUnit
' Implementing IOrganizationalUnit here...'
End Class
Public Interface IIdentifiableDirectoryEntity
Inherits IDirectoryEntity
<DirectoryAttribute("sAMAccountName")> _
Property Login As String
End Interface
Public Interface IGroup
Inherits IIdentifiableDirectoryEntity
End Interface
Public Class Group
Implements IGroup
Private _attributes() As String
' Implementing IGroup here...'
Private ReadOnly Property Attributes() As String()
Get
If (_attributes Is Nothing) Then
Dim attr() As DirectoryAttribute = _
CType(GetType(Group).GetCustomAttributes(GetType(DirectoryAttribute), True), DirectoryAttribute())
If (attr Is Nothing OrElse attr.Length = 0 OrElse attr(0) Is Nothing) Then _
Return New String(0) { }
_attributes = New String(attr.Length) { }
For index As Integer = 0 To attr.Length - 1 Or _attributes.Length - 1 Step 1
_attributes(index) = attr(index).Attribute
Next
End If
Return _attributes
End Get
End Property
End Class
话虽如此,Private Property Attributes() As String()
也不会返回置于接口属性上的DirectoryAttribute
的值,因为我在{的继承参数中指定 True {1}}方法?
答案 0 :(得分:2)
我认为有两个主要的混淆点: