你为什么不能在投射时使用GetType?

Set*_*man 0 .net inheritance casting

我问了一个仍然没有答案的问题,这个问题将更多地阐明这个问题.

为什么我不能这样做......

_wizardDialog.UIRoot.Controls.Clear()
_wizardDialog.UIRoot.Controls.Add(TryCast(wizardUserControl, wizardUserControl.GetType))
Run Code Online (Sandbox Code Playgroud)

为什么以这种方式使用GetType会失败.try cast的参数是object和type.由于wizardUserControl.GetType返回一个类型,这是不合法的.Visual Studio抱怨zh_cn未定义wizardUserControl.GetType.

底线是如何让WizardUserControl返回传递给我的方法的类型.这里调用的方法不应该是硬编码的类型......这就是所有这些OOP的东西......对吗?那你怎么做

如果可以的话,请阅读其他问题并在那里回答......这就是我要解决的问题.

我正在学习oop的东西.

赛斯

Pav*_*aev 6

GetType()不返回类型.它返回一个类的实例Type,它在运行时描述一个类型.但是,如果Type期望编译时类型引用(例如TryCast),则实例不可替代.他们只是不同的东西.

这样想吧.TryCast运算符具有明确的编译时结果类型.如果你使用Type从其他地方获得的对象(并且它可能是条件的Random,因此通常无法在编译时预测结果),那么编译时结果类型应该是什么TryCast?