Приведение к типизированному объекту с использованием отражения - PullRequest
1 голос
/ 12 декабря 2011

Могу ли я привести объект типа object к MyType<T>, используя отражение, если я не знаю, что такое T до времени выполнения?

Ответы [ 2 ]

5 голосов
/ 12 декабря 2011

Вы не можете привести к типу, неизвестному во время компиляции.Приведение действительно полезно только как конструкция времени компиляции, так как вам нужно знать тип, чтобы использовать его напрямую.

Если ваша цель - работать с объектом через Reflection, то этодругой сценарий.В этом случае вы можете использовать Type.MakeGenericType для создания правильного типа для вашего объекта.

Это позволит вам использовать отражение для работы над вашим объектом.

1 голос
/ 12 декабря 2011

Хитрость в таких ситуациях заключается в использовании неуниверсального класса с универсальными методами.

public class MyType
{
    public T GetResult<T>() {
    }
}

Обратите внимание, что это происходит во время компиляции. Обобщения дают вам возможность создавать различные «разновидности» типа или метода во время компиляции; но генерики не динамические! Обобщения являются типобезопасными, и безопасность типов может быть достигнута только во время компиляции (поскольку компилятор проверяет безопасность типов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...