gpt4 book ai didi

c# - 确定对象的类型并转换为类型

转载 作者:行者123 更新时间:2023-11-30 22:11:08 26 4
gpt4 key购买 nike

我希望能够确定一个对象的类型,然后将该对象转换为它应该是的类型。我会尽力解释。下面的代码不起作用,但它显示了我想要实现的目标。我需要返回未知对象类型的大小;可以是按钮、面板、表单等。

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...
}
}

通常我可以将对象转换成它应该的样子并完成它,但是一旦“未知对象”部分出现,我就有点陷入了死胡同。我确信我可以将它重载一百万次并让它找到正确的类型,但我希望有一种更明智的方法来做到这一点。

最佳答案

让所有这些类型中的一百万个都实现一个具有 Size 属性的接口(interface),然后键入属于该接口(interface)的参数,而不是不断地对类型进行编译时检查以尝试支持任何可能有尺寸的东西。

如果某些对象无法修改以实现接口(interface),请考虑添加一个额外的委托(delegate)作为参数来选择大小,方法如下:

public static void Draw<T>(T AnimateObject, Func<T, Size> sizeSelector)

然后您可以在方法内部使用该委托(delegate)来访问对象的大小。

调用者可以这样写:

Draw(square, obj => obj.Size);

关于c# - 确定对象的类型并转换为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20433198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com