Приведение объекта к известному (но неизвестному) типу - PullRequest
2 голосов
/ 01 декабря 2011

Глядя, чтобы привести Объект к известному типу во время выполнения.У меня есть класс (назовите его Item для удобства), который является базовым классом для Box.У Box есть как собственные свойства, так и свойства Item (очевидно).

По сути, я создаю экземпляр Box, используя метод CreateInstance, это создает объект типа объекта, но истинного типа (как было показанопри выполнении «typeof») имеет тип Box.Мне нужно привести этот Объект обратно в Коробку без жесткого кодирования switch / if и т. Д. Код, который я должен протестировать, приведен ниже, и у меня заканчиваются идеи.Я уже пробовал много разных способов, один из приведенных выше - один из многих.Любые идеи или помощь там?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Ваш BaseList ожидает Item объектов. У вас есть для сотворения:

if (obj is Item)
    BaseList.Add((Item)obj);

Или:

if (typeof(Item).IsAssignableFrom(t))
    BaseList.Add((Item)obj);
0 голосов
/ 01 декабря 2011

Работаете ли вы с динамически загруженными сборками?Если вы точно знаете, что это будет Box, не могли бы вы объявить Box как частичный класс рядом с Item и заполнить детали реализации для него в вашей динамической сборке?

Не уверен, что это сработает, яМы не пытались решить эту конкретную проблему.

...