gpt4 book ai didi

c# - 在运行时解析泛型的重载

转载 作者:行者123 更新时间:2023-12-02 22:32:39 24 4
gpt4 key购买 nike

在 C# 中是否可以将泛型传递给重载方法,并让它解析为该方法的非泛型版本?例如:

class Program {
static void Main(string[] args) {
A a = new A();

Process(a);
Console.ReadLine();
}

static void Process<T>(T item) {
Writer(item);
}

// Writer methods...

static void Writer<T>(T item) {
Console.WriteLine("Type: " + item.GetType());
Console.WriteLine("You lose");
}

static void Writer(A item) {
item.Write();
}
}

class A {
public void Write() {
Console.WriteLine("You found me!");
}
}

这段代码输出:

Type: Foo.A

You lose

我想看看:

You found me!

有没有办法做到这一点,或类似的东西?我正在使用 C# 4。

最佳答案

您可以使用dynamic 将重载决策推迟到运行时:

static void Process<T>(T item)
{
dynamic d = item;
Writer(d);
}

关于c# - 在运行时解析泛型的重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977804/

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