Приведение к определенному типу во время выполнения - PullRequest
1 голос
/ 27 марта 2012

Мне нужно привести к определенному типу во время выполнения.

Как это работает и как это выглядит - сейчас:

Customer test = (Customer)entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);

Customer как String, где мне нужно для GetProperty(), не так написано напрямую , оно происходит от переменной, которая всегда меняется.Я просто написал «Клиент», для целей понимания.

То, что я хочу сейчас, то же самое, но не говоря, что это Клиент или любой тип.

Placeholder test = (Placeholder)entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);

Потому что это также можетбыть примерно таким:

Order test = (Order)entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);

Я пробовал что-то вроде businnesObject = Activator.CreateInstance(type);

Надеюсь, у кого-то есть небольшое решение для этого

Ответы [ 3 ]

4 голосов
/ 27 марта 2012

Customer и Order оба наследуются от System.Object, поэтому вы можете просто использовать

Object test = entityBase.GetType().GetProperty("That Changes, thats fine").GetValue(entityBase, null);
3 голосов
/ 27 марта 2012

Если вам нужно выполнить все проверки во время выполнения, вы можете привести его к dynamic.При этом вы потеряете все проверки intellisense и времени компиляции, но я думаю, это именно то, что вы и хотели.

dynamic test = entityBase.GetType().GetProperty("Customer").GetValue(entityBase, null);
1 голос
/ 27 марта 2012

, если ваша цель - создать объект некоторого класса во время выполнения,

Type assemblyType = Type.GetType("yournamespace.class,yournamespace");

YourClass objYourClass=(YourClass)Activator.CreateInstance(assemblyType);

соответствующая dll вашего пространства имен должна находиться в папке bin.

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