Man kann nicht immer wissen, welche Type
eines Objekts zur Kompilierzeit, sondern müssen möglicherweise eine Instanz der Type
.
Wie erhält man eine neue Objektinstanz aus einer Type
?
Man kann nicht immer wissen, welche Type
eines Objekts zur Kompilierzeit, sondern müssen möglicherweise eine Instanz der Type
.
Wie erhält man eine neue Objektinstanz aus einer Type
?
Ich kann über diese Frage, weil ich suchte, um eine einfache CloneObject-Methode für beliebige Klasse (mit einem Standard-Konstruktor) zu implementieren
Bei einer generischen Methode können Sie verlangen, dass der Typ New() implementiert.
Public Function CloneObject(Of T As New)(ByVal src As T) As T
Dim result As T = Nothing
Dim cloneable = TryCast(src, ICloneable)
If cloneable IsNot Nothing Then
result = cloneable.Clone()
Else
result = New T
CopySimpleProperties(src, result, Nothing, "clone")
End If
Return result
End Function
Bei nicht-generischen Typen nehmen Sie an, dass der Typ einen Standardkonstruktor hat und fangen eine Ausnahme, wenn dies nicht der Fall ist.
Public Function CloneObject(ByVal src As Object) As Object
Dim result As Object = Nothing
Dim cloneable As ICloneable
Try
cloneable = TryCast(src, ICloneable)
If cloneable IsNot Nothing Then
result = cloneable.Clone()
Else
result = Activator.CreateInstance(src.GetType())
CopySimpleProperties(src, result, Nothing, "clone")
End If
Catch ex As Exception
Trace.WriteLine("!!! CloneObject(): " & ex.Message)
End Try
Return result
End Function
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.