我目前有这种类型的代码:
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 中这样的事情可能吗?如果它比我当前的代码更混乱,那么我认为这样做没有任何意义,但我很想知道。谢谢!
编辑:澄清一下,我完全理解实现接口是最合适且可能正确的解决方案。也就是说,我更感兴趣的是如何在不实现接口的情况下做到这一点。感谢您的精彩回复!