У меня есть определенная хитрость классов, которая нуждается в возможности для копирования всех общедоступных свойств из одного объекта в другой.
Каждый класс имеет определенный набор публичных свойств, который может быть может отличаться от любого другого класса.Копирование объектов в этот «объект» в C#
Пример:
class Base
{
// Common properties/methods...
public void Copy<T>(T data) where T : Base
{
// ...
}
}
class D1 : Base
{
public int ID
{
get;
set;
}
}
class D2 : Base
{
public string Name
{
get;
set;
}
}
Через прибегая к помощи я прочитал об этих методах:
- с помощью отражения
- Генерирование IL код
- Сериализация
Все из них либо очень c omplex или очень медленно или иногда и то, и другое.
Я что-то упустил? Есть ли другой способ доступа к необработанному указателю this
?
EDIT:
Я сделаю это.
T относится к типу вызывающего класса. Например, если он был вызван D1 T, всегда будет D1.
Причина общего заключается в том, что я не знаю, что такое Т.
Я что-то упустил?
Должен ли я использовать Base data
в качестве параметра?
Итак, как бы вы скопировали 'D1.ID' в' D2.Name'? – Oded
Похоже, это может помочь, http://stackoverflow.com/questions/1198886/c-using-reflection-to-copy-base-class-properties. – Noldorin
@Oded: Вы не будете. Копирование из D1 всегда будет использоваться для объекта D1. Я просто хочу ** общий метод **, который сможет копировать объект T с этим типом T. Этот метод должен быть открыт базой. –