gpt4 book ai didi

c# - 如果在运行时只知道类型参数,如何调用泛型方法?

转载 作者:太空狗 更新时间:2023-10-29 20:05:39 27 4
gpt4 key购买 nike

我有这个方法:

public List<T> SomeMethod<T>( params ) where T : new()

所以我想称这个为SomeMethod如果我知道类型就可以了:

SomeMethod<Class1>();

但如果我只有 Class1在运行时我无法调用它?

那么如何调用SomeMethod未知的 T 型?我通过反射获得了 Type。

我的类型是 SomeMethod<Type | GetType()>不起作用。

5 月 7 日更新:

这是我想要实现的示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace ConsoleApplication63
{
public class DummyClass
{
}

public class Class1
{
public string Name;
}

class AssemblyTypesReflection
{
static void Main(string[] args)
{
object obj = new Class1() { Name = "John" } ;

Assembly assembly = Assembly.GetExecutingAssembly();
var AsmClass1 = (from i in assembly.GetTypes() where i.Name == "Class1" select i).FirstOrDefault();


var list = SomeMethod<AsmClass1>((AsmClass1)obj); //Here it fails
}

static List<T> SomeMethod<T>(T obj) where T : new()
{
return new List<T> { obj };
}
}
}

这是一个从更大背景中提取的演示。

最佳答案

你需要使用反射来调用它:

var method = typeof(SomeClass).GetMethod("SomeMethod");
method.MakeGenericMethod(someType).Invoke(...);

关于c# - 如果在运行时只知道类型参数,如何调用泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433007/

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