C# - 如何更改Object的类型然后使用Class中的方法?

Ric*_*rdG 0 c# typeof object

public void ChangeObjectType(System.Type objectType, Object selectedObject)
{
    selectedObject = Activator.CreateInstance(objectType);
}

internal void BuoyToMouse()
{
    ChangeObjectType(typeof(Buoy), selectedObject);
    selectedObject.setPosition(mouseCurrentState.X - mouseStart.X, mouseCurrentState.Y - mouseStart.Y);
}
Run Code Online (Sandbox Code Playgroud)

我正在创建一个游戏,我正在尝试处理鼠标事件.我正在尝试使用Object类型的Object,然后根据单击的Object类型重新定义它的类型.

当我尝试这个时,我收到此错误消息:

错误2'对象'不包含'setPosition'的定义,并且没有扩展方法'setPosition'接受类型'object'的第一个参数可以找到(你是否缺少using指令或程序集引用?)

如何让它了解selectedObject更改类型?

Gab*_*abe 6

你不能"改变对象的类型",但这听起来不像你想要做的那样.听起来你有一个特定类型的值,它保存在一个类型的变量中object.

在这种情况下,您可以告诉编译器您的值的实际类型是使用"强制转换":

((Buoy)selectedObject).setPosition(mouseCurrentState.X - mouseStart.X, mouseCurrentState.Y - mouseStart.Y); 

(selectedObject as Buoy).setPosition(mouseCurrentState.X - mouseStart.X, mouseCurrentState.Y - mouseStart.Y); 
Run Code Online (Sandbox Code Playgroud)