设置Reflection Property对象而不知道属性名称&值

时间:2011-11-13 10:43:00

标签: c# reflection

我有一个名为BackUp的类,其中包含一些属性。 假设我有一个BackUp的现有实例,其属性已初始化。

当我在BackUp类中使用反射创建AgentActivator对象并且我需要设置其属性时,我的想法是从BackUp对象中检索属性

问题是从PropertyInfo对象中获取BackUp对象,并在反射对象上设置匹配属性。

我正在做以下事情:

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方法。 它的工作是获取字符串(属性名称)并从localBackUp返回匹配值,该值包含propName的属性。

2 个答案:

答案 0 :(得分:1)

从您的代码中我假设Type localBackupclassInstance相同,因此只是初始化一个具有相同属性值的新类实例另一个类实例({{1已经尝试过了

localBackup

但有一句话:

如果我的假设是正确的,那么有恕我直言更好的选择来做你正在尝试的事情(例如通过序列化和反序列化一个实例)......

答案 1 :(得分:0)

如果你的目标是克隆对象,那么最好的(我认为)方法在这里描述:Deep cloning objects(正如@Yahia提到的序列化和反序列化)。非常重要的是它返回深层复制,因此原始对象和新对象之间不会共享数据。