Почему это клонирование не работает?C#

Место общения программистов C#
Ответить
Anonymous
 Почему это клонирование не работает?

Сообщение Anonymous »

Я пытаюсь клонировать экземпляры полученного класса, но каким -то образом это не работает. Метод клонирования: < /p>

public static T CloneFieldsAndProperties(T input)
{
T result = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] listOfProps = typeof(T).GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.CreateInstance);
FieldInfo[] listOfFields = typeof(T).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.CreateInstance);
foreach (PropertyInfo prop in listOfProps) prop.SetValue(result, prop.GetValue(input, null), null);
foreach (FieldInfo field in listOfFields) field.SetValue(result, field.GetValue(input));
return result;
}
< /code>

Как вы можете видеть, я добавил много связующих флагс < /code>, потому что он не работал. Но безрезультатно.MyclassA1 a1 = new MyclassA1();
MyclassA a = CloneFieldsAndProperties(a1);
if (a is MyclassA1) Text = "Works";
< /code>

где: < /p>

class MyclassA
{
public int i;
}

class MyclassA1 : MyclassA
{
public int i1;
}
< /code>

Но в моей реальной программе это не так. Объявления классов реальной программы длинные, поэтому я не публикую их здесь. В чем может быть проблема?

Подробнее здесь: https://stackoverflow.com/questions/102 ... g-not-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»