Копирование отраженного значения родового типа - PullRequest
0 голосов
/ 03 октября 2018

Хорошо, у меня есть универсальный метод копирования.

В моем классе есть класс GenericPrimitiveContainer, который просто содержит значение T Value.

В моем общем методе копирования я хочу скопировать значение из экземпляра A в экземпляр B.

Пока это выглядит так:

var instance = Activator.CreateInstance(props[i].PropertyType);
var container = props[i].GetValue(source, null);

Это дает мненовый экземпляр (экземпляр) и тот, с которого я копирую (контейнер).

Я могу сказать что-то вроде этого:

(instance as GenericPrimitiveContainer<int>).Value = (container as GenericPrimitiveContainer<int>).Value;

Но это не очень обобщенно.Если я удаляю «int», то он говорит мне «ожидаемый тип», и если я удаляю угловые скобки, он также не будет работать.

Я знаю нужный тип, и этот тип находится вТип [] называется genericArgs.Но если я вставлю туда, это тоже не сработает.

Как я могу это сделать?

1 Ответ

0 голосов
/ 03 октября 2018

Мое предложение заключается в следующем подходе:

private T Copy<T>(T original)
{
    Type type = original.GetType();
    var copy = Activator.CreateInstance<T>();
    var props = type.GetProperties();           
    foreach (var prop in props)
    {
        // Get the value of the original objects property
        var originalPropertyValue = prop.GetValue(original, null);

        // Set the value to the new objects property
        prop.SetValue(copy, originalPropertyValue);
    }
    return copy;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...