【发布时间】:2019-09-07 04:29:37
【问题描述】:
考虑以下代码:
class MyClass
{
}
class MyClass2 : MyClass
{
}
private void Foo(MyClass cl)
{
//cl is actually MyClass2 instance
TestGeneric(cl);
}
private void TestGeneric<T>(T val)
{
//do smth
}
调用 Foo() 后,TestGeneric 中的 T 是 MyClass,而不是 MyClass2。 如何实现将 val 视为 MyClass2 实例? 提前致谢。
更新: 我实际上并不知道该对象是使用 MyClass2 ctor 创建的,而是可以通过调用 val.GetType() 来推断这一点,所以简单的 MyClass2 不会工作
【问题讨论】:
-
你为什么要加入
as演员表? -
您能否详细介绍一下您希望使用此代码获得什么?
-
解释如下:我收到一个作为 MyClass 实例传输的对象,而它实际上是 MyClass2 的一个实例。 private void HandleSomeMessage(MyClass cl) 我希望能够使用 ACTUAL cl 的类型调用通用方法 void HandleMessageGeneric
(T cl) -
为什么要调用泛型方法?它不会让编写特定于被传递的
MyClass的实际类型的代码变得更容易。