VB.Net 2010を使用しています。外部(オフザセルフ)アプリケーションによってアプリケーションに入力された(COM)オブジェクトの内容を複製したいと思います。フィールドとプロパティの値を1つずつコピーしたくありません(フィールド/プロパティは将来のアプリケーションビルドで追加または削除される可能性があるため)。
オブジェクトタイプはシリアル化できません。
私は次のようにReflectionを試しました(スレッドで提案されたVBコードは、あるオブジェクトを別のオブジェクトにコピーします):
Imports System.Reflection
Public Class ObjectHelper
' Creates a copy of an object
Public Shared Function GetCopy(Of SourceType As {Class, New})(ByVal Source As SourceType) As SourceType
Dim ReturnValue As New SourceType
Dim sourceProperties() As PropertyInfo = Source.GetType().GetProperties()
For Each sourceProp As PropertyInfo In sourceProperties
sourceProp.SetValue(
ReturnValue,
sourceProp.GetValue(Source, Nothing),
Nothing)
Next
Return ReturnValue
End Function
End Class
返されたsourceProperties()配列が空であるため、これは機能しません。
何か案は?