gpt4 book ai didi

c# - 通过反射实现接口(interface)

转载 作者:IT王子 更新时间:2023-10-29 03:58:26 28 4
gpt4 key购买 nike

C#中如何通过反射获取接口(interface)的所有实现?

最佳答案

答案是这样的;它会搜索整个应用程序域——即您的应用程序当前加载的每个程序集。

/// <summary>
/// Returns all types in the current AppDomain implementing the interface or inheriting the type.
/// </summary>
public static IEnumerable<Type> TypesImplementingInterface(Type desiredType)
{
return AppDomain
.CurrentDomain
.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => desiredType.IsAssignableFrom(type));
}

是这样使用的;

var disposableTypes =  TypesImplementingInterface(typeof(IDisposable));

您可能还希望此函数找到实际的具体类型——即过滤掉抽象、接口(interface)和通用类型定义。

public static bool IsRealClass(Type testType)
{
return testType.IsAbstract == false
&& testType.IsGenericTypeDefinition == false
&& testType.IsInterface == false;
}

关于c# - 通过反射实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80247/

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