Я хочу создать свойство на основе типа объекта, который достигает ViewModel.
Я сделал следующее.
Создан универсальный класс, в котором генерируется свойство.
public class GenericProperty<T>
{
public T Property
{
get;
set;
}
}
Я создаю экземпляр класса следующим образом:
Type Tipo = Parameter.GetType();
GenericProperty<Tipo> Test = new GenericProperty<Tipo>();
И теперь возникает проблема: <Tipo>
говорит мне:
Тип - переменная , но используется как тип
Как я могу решить проблему?
Уже я поместил сходный ответ в Новый List (Of T) Типа, перемещенного за параметр , но существо для VB.net не может считаться дубликатом.
В действительности, тип объекта должен быть известным во времени компиляции (исключая dynamic
, у которых есть очень конкретные случаи использования), с которым ответа априори было бы , не возможно .
Однако, есть способ это получать посредством Reflection
. Оно было бы чем-либо подобным:
Type tipo = typeof(GenericProperty<>).MakeGenericType(new Type[] { Parameter.GetType() });
var Test = Activator.CreateInstance(tipo);
, Поскольку ты видишь, используют со стороны MakeGenericType :
Заменяет элементы массива типов на параметры типа определения характерного настоящего типа и возвращает объект Type, который представляет сооруженный вытекающий тип.
И позже Activator.CreateInstance
, чтобы создавать инстанцию произведенного типа:
Верьте в инстанцию определенного типа используя строитель, который лучше встречается с определенными параметрами.
В любом случае, как это говорил в ответе, соединенном сначала, не точно каков твой случай использования, но я всегда восхвалил бы себя из-за решений, основанных на интерфейсах например, нежели в ресурсах этого типа. Я надеюсь все же, что тебе помогает этот ответ.
Test
однажды instanciada используяCreateInstance
действительно желанного типа (GenericProperty<T>
) точно, равно как если ты делал напримерGenericProperty<string> Test = new GenericProperty<string>()
. Почему ты не собирался иметь доступ кProperty
? – Pikoh♦ 27.11.2019, 16:30