【发布时间】:2013-12-06 20:41:37
【问题描述】:
我希望能够确定对象的类型,然后将该对象转换为应有的类型。我会尽力解释。下面的代码不起作用,但它显示了我想要实现的目标。我需要返回未知对象类型的大小;可以是按钮、面板、表单等。
public static void Draw(object AnimateObject)
{
try
{
// Set the starting coordinants for our graphics drawing
int y = 0;
int x = 0;
// Set the end coordinants for our graphics drawing
int width = AnimateObject.Size.Width;
int height = AnimateObject.Size.Height;
// More graphics related stuff here...
}
}
通常我可以将对象投射到应有的状态并完成它,但是一旦出现“未知对象”部分,我就陷入了死胡同。我确信我可以将这个东西重载一百万次并让它找到正确的类型,但我希望有一种更明智的方法来做到这一点。
【问题讨论】:
-
看来你需要
dynamic而不是object。 -
所有这些类型是否有一个共同的父级具有
Size?这就是多态性的全部意义所在。 -
你可以试试
dynamic。它将所有检查从编译时移到运行时。或者找到所有其他派生自(或接口然后实现)的通用类型并创建泛型方法。 -
@Candide 动态修复了它!如果发布,我将接受作为答案。