我有一个名为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
的属性。
答案 0 :(得分:1)
从您的代码中我假设Type
localBackup
和classInstance
相同,因此只是初始化一个具有相同属性值的新类实例另一个类实例({{1已经尝试过了
localBackup
但有一句话:
如果我的假设是正确的,那么有恕我直言更好的选择来做你正在尝试的事情(例如通过序列化和反序列化一个实例)......
答案 1 :(得分:0)
如果你的目标是克隆对象,那么最好的(我认为)方法在这里描述:Deep cloning objects(正如@Yahia提到的序列化和反序列化)。非常重要的是它返回深层复制,因此原始对象和新对象之间不会共享数据。