请考虑以下代码,只是一个具有从Long(Int64
)自定义扩展转换的类。铸造,可分配性和自定义转换
Public Class CharacterArgs
Private _CharacterID As Long
Public ReadOnly Property CharacterID() As Long
Get
Return _CharacterID
End Get
End Property
Public Sub New(ByVal characterID As Long)
_CharacterID = characterID
End Sub
Public Sub New()
End Sub
Overloads Shared Widening Operator CType(ByVal source As Long) As CharacterArgs
Return New CharacterArgs(source)
End Operator
End Class
下面的代码工作:
Dim test As CharacterArgs
test = 10
但是:
Dim canAssign = GetType(CharacterArgs).IsAssignableFrom(GetType(Long)) 'False
Dim convertTest = Convert.ChangeType(10L, GetType(CharacterArgs))
'Throws InvalidCastException
所以我的问题:
- 是否有支持自定义转换的铸件/转换方法,但也接受目的地类型为
System.Type
对象(而不是CType
)? - 是否存在反映或投射“测试”方法,类似于
IsAssignableFrom
,它也将解释自定义转换?