Я работаю в c # с несколькими рабочими пространствами, которые имеют один определенный класс, который всегда одинаков в каждом рабочем пространстве.
Я хотел бы иметь возможность иметь копию этого класса, чтобы иметь возможность работать с ним без учета различий в пространствах имен.
пример:
namespace1 {
class class1{
public class2;
}
class class2{
public string;
}
}
namespace2 {
class class1{
public class2;
}
class class2{
public string;
}
}
В моем скопированном классе у меня есть функция для копирования всех данных в один из классов пространства имен.
Это работает, если у меня есть только стандартные типы c #. Я получил исключение («Объект не соответствует типу цели.»), Как только я имею дело с объектом класса 2 (который также из разных пространств имен)
public Object toNamespaceClass(Object namespaceClass)
{
try
{
Type fromType = this.GetType();
Type toType = namespaceClass.GetType();
PropertyInfo[] fromProps = fromType.GetProperties();
PropertyInfo[] toProps = toType.GetProperties();
for (int i = 0; i < fromProps.Length; i++)
{
PropertyInfo fromProp = fromProps[i];
PropertyInfo toProp = toType.GetProperty(fromProp.Name);
if (toProp != null)
{
toProp.SetValue(this, fromProp.GetValue(namespaceClass, null), null);
}
}
}
catch (Exception ex)
{
}
return namespaceClass;
}
Кто-нибудь имеет представление о том, как бороться с этим видом "рекурсивного отражения".
Я надеюсь, что все понятно.
Спасибо, пока!
Редактировать:
Я думаю, что я получил решение (по крайней мере, на мой взгляд), я попробую решение обратно на работу завтра. Возможно, решение - убрать мою функцию из класса и использовать ее рекурсивно, если свойство не является стандартным типом.