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的东西.
赛斯
GetType()不返回类型.它返回一个类的实例Type,它在运行时描述一个类型.但是,如果Type期望编译时类型引用(例如TryCast),则实例不可替代.他们只是不同的东西.
这样想吧.TryCast运算符具有明确的编译时结果类型.如果你使用Type从其他地方获得的对象(并且它可能是条件的Random,因此通常无法在编译时预测结果),那么编译时结果类型应该是什么TryCast?