プロパティ名と値を知らずにReflection Propertyオブジェクトを設定する

いくつかのプロパティを含む BackUp という名前のクラスがあります。
たとえば、プロパティが初期化された BackUp のインスタンスがあるとします。

AgentActivator オブジェクトを作成したいプロパティーを設定する必要がある
BackUp クラスでリフレクションを使用するとき、そのアイデアは BackUp
オブジェクトです。

問題は、 BackUp オブジェクトから PropertyInfo
オブジェクトを取り出し、反射オブジェクトに一致するプロパティを設定することです。

私は次のことをしています:

Assembly assembly = Assembly.LoadFile(localBackUp.AssemblyFileName);
Type currentClasstype = assembly.GetType(localBackUp.ClassName);            
PropertyInfo[] properties = currentClasstype.GetProperties();
object classInstance = Activator.CreateInstance(localBackUp.AssemblyFileName, 
    localBackUp.ClassName);
string propName= null;                   
foreach(PropertyInfo prop in properties)
{
    propName= prop.Name;
    currentClasstype.GetProperty(propName).
        SetValue(classInstance, findProperty(localBackUp, propNmae), null);

}

私は findProperty メソッドを実装する方法を見つける必要があります。
その仕事は文字列(プロパティ名)を取得し、 propName でプロパティを保持する
localBackUp から一致する値を返すことです。

ベストアンサー

あなたのコードから、 localBackupclassInstance
Type が同じで、同じプロパティ値を持つ新しいクラスインスタンスをクラスインスタンス(
localBackup )は既に試しています

prop.GetSetMethod().Invoke (classInstance, new object[] { prop.GetGetMethod().Invoke(localBackUp, null) } );

しかし、1つの発言:

私の前提が真実ならば、あなたがしようとしていることを(例えばインスタンスを直列化してデシリアライズして)行うIMHOの方がはるかに優れています…

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です