Как дизайн, чтобы избежать литья

Вы должны посмотреть этот пост от Айенде: WCF, Mocking и IoC: Oh MY! . Где-то рядом с дном находится метод GetCreationDelegate, который должен помочь. В основном это делает:

string typeName = ...;
Type proxyType = Type.GetType(typeName);

Type type = typeof (ChannelFactory<>).MakeGenericType(proxyType);

object target = Activator.CreateInstance(type);

MethodInfo methodInfo = type.GetMethod("CreateChannel", new Type[] {});

return methodInfo.Invoke(target, new object[0]);

1
задан Minee 17 January 2019 в 15:33
поделиться

1 ответ

Из того, что я понимаю из вашего вопроса, вы храните базовые указатели объектов, но извне вы хотите оперировать ими как производными объектами, которыми они являются.

В этом случае крайне важно понизить рейтинг.

Хотя ваш вопрос расплывчатый, я вижу, что ваша ситуация очень похожа на элемент управления в диалоговом окне, где оба являются окнами, но говорят, что CheckBox - это специализированное окно, над которым вы хотите работать, в частности, с расширенными функциями.

Основные рамки используют приведение для этой проблемы, как MFC здесь .

В новой платформе Qt также используется приведение, как в функции findChildren .

Я надеюсь, что вы сможете оценить свое решение, учитывая эту информацию, и, возможно, помириться с ней.

0
ответ дан zar 17 January 2019 в 15:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: