gpt4 book ai didi

c# - 通用函数创建参数基的通用对象

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

我有以下代码:

public class Foo
{
public void DoSomething()
{
DoSomething(this);
}

private static void DoSomething<T>(T obj)
{
var generic = new Generic<T>();
}
}

public class Bar : Foo
{
// properties/methods
}

public class Generic<T>
{
// properties/methods
}

public class Test
{
public void TestMethod()
{
var bar = new Bar();
bar.DoSomething(); // instantiates Generic<Foo> instead of Generic<Bar>
}
}

是否可以使用当前类型而不是基类型从派生方法实例化泛型类?

最佳答案

Foo.DoSomethingthis 的编译时类型就是 Foo,因此编译器只能 将类型参数推断为 Foo

让它根据执行时类型执行此操作的最简单方法可能是:

DoSomething((dynamic) this);

或者,您可以自己用反射来调用它。

关于c# - 通用函数创建参数基的通用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427698/

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