gpt4 book ai didi

c# - 通用接口(interface)类型

转载 作者:行者123 更新时间:2023-11-30 19:56:40 27 4
gpt4 key购买 nike

我做了一个迷你项目来反射我导入的 dll 中的所有接口(interface),它继承 self 的“IBase”接口(interface),就像这样

 Type[] services = typeof(DataAccess.IXXX).Assembly.GetTypes();
foreach (Type SC in services)
{
if (SC.IsInterface)
{
if (SC.GetInterfaces().Contains(typeof(DataAccess.IBase)))
{
file.WriteLine(SC.Name);
}
}
}

问题是我的很多接口(interface)都包含泛型

public interface IExample<TKey, Tvalue, TCount> : IBase

但是我的SC.Name是这样写的

IExample'3

你能帮帮我吗?

最佳答案

IExample'3 是具有 3 个通用类型参数的接口(interface)的内部名称(您可能已经猜到了)。要获取类或接口(interface)的通用类型参数,请使用 Type.GetGenericArguments

你可以使用这样的东西来打印正确的名字

var type = typeof(IExample<int, double>);
var arguments = Type.GetGenericArguments(type);
if(arguments.Any())
{
var name = argument.Name.Replace("'" + arguments.Length, "");
Console.Write(name + "<");
Console.Write(string.Join(", ", arguments.Select(x => x.Name));
Console.WriteLine(">")
}
else
{
Console.WriteLine(type.Name);
}

关于c# - 通用接口(interface)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230723/

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