gpt4 book ai didi

C# 更简单的运行时泛型

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:40 25 4
gpt4 key购买 nike

有没有一种方法可以调用只有在运行时才知道的类型的泛型函数?

我正在尝试做类似的事情:

    static  void bar()
{
object b = 6;
string c = foo<typeof(b)>();
}

static string foo<T>()
{
return typeof (T).Name;
}

基本上我只想在运行时决定类型参数,但我调用的函数取决于类型参数。

我也知道这可以通过反射来完成...但这不是解决问题的最佳方法...


我正在寻找 C# 中的动态特性...


我正在两个类之间架起一座桥梁,第一个类基本上是一棵具有不同类型对象的大树(按接口(interface)组合),另一个类是一种“ super 访问者”。晚餐访问者接受将类型映射到对象的键值字典,如下所示: dic.Add(对象值)

并且 T 不一定是值的类型......很多时候它不是......我知道它写得不好,但我无法修复它......我可以解决它,但只能在运行时...

我已经用反射做到了,但如果有更好的方法不用它们我会很乐意学习......

谢谢

最佳答案

这有点 hack,但你可以让 dynamic 通过类似的方式为你做反射工作,

class Program
{
static void Main(string[] args)
{
var b = 6;
var t = (dynamic)new T();
var n = t.Foo(b);
}

class T
{
public string Foo<T>(T a)
{
return typeof(T).Name;
}
}
}

此处动态调用将提取b 的类型并将其用作Foo() 的类型参数。

关于C# 更简单的运行时泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254728/

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