У меня сейчас такой код:
private void FillObject(Object MainObject, Foo Arg1, Bar Arg2)
{
if (MainObject is SomeClassType1)
{
SomeClassType1 HelpObject = (SomeClassType1)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
else if (MainObject is SomeClassType2)
{
SomeClassType2 HelpObject = (SomeClassType2)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
}
Предполагая, что SomeClassType1 и SomeClassType2 имеют одинаковый набор свойств, которые я хочу назначить (хотя они могут отличаться в других), возможно ли динамически привести MainObject к соответствующему типу и затем присвоить значение, не дублируя код ?
Вот что я хотел бы увидеть в конце:
private void FillObject(Object MainObject, Foo Arg1, Bar Arg2)
{
Type DynamicType = null;
if (MainObject is SomeClassType1)
{
DynamicType = typeof(SomeClassType1);
}
else if (MainObject is SomeClassType2)
{
DynamicType = typeof(SomeClassType2);
}
DynamicType HelpObject = (DynamicType)MainObject;
HelpObject.Property1 = Arg1;
HelpObject.Property2 = Arg2;
}
И, очевидно, C # жалуется на невозможность найти DynamicType:
Не удалось найти тип или имя пространства имен DynamicType (отсутствует директива using или ссылка на сборку?)
Возможно ли что-то подобное в C # 2.0? Если это более грязно, чем мой текущий код, тогда я не вижу смысла в этом, но мне очень интересно это выяснить. Спасибо!
РЕДАКТИРОВАТЬ: Просто чтобы уточнить, я прекрасно понимаю, что реализация интерфейса является наиболее подходящим и, вероятно, правильным решением. Тем не менее, мне больше интересно посмотреть, как я могу сделать это без реализации интерфейса. Спасибо за отличные ответы!