获取通用接口的所有具体实现

时间:2016-12-02 22:16:25

标签: generics c#-4.0 reflection

我在问题的第一部分找到了answer。然而,它也在我的收藏中返回界面。

我正在尝试获取接口的所有具体实现

case Constants.KEY_ENTER:
  // this.onEnterKeyDown();
  // Whatever makes the clients happy amirite?
  this.onTabKeyDown();
  break;

这是唯一具体的实现(到目前为止):

public interface IPermissionAccessDetails<T,TZ>
{
    List<PermissionAccessDetails<T,TZ>> AccessDetails { get; }
}

以下是我用来从上面引用的答案中找到所有实现(几乎是逐字)的代码。

    public class BillingPermissionAccessDetails : IPermissionAccessDetails<BillingPermission, EBilling>
    {
        public List<PermissionAccessDetails<BillingPermission, EBilling>> AccessDetails => Config();
    }

我的问题是allPermissionAccessTypeDetails应该只有1个项目 - 但它也包括IPermissionAccessDetails类型。我该如何排除?

1 个答案:

答案 0 :(得分:0)

找到它。修改了辅助方法:

        static bool DoesTypeSupportInterface(Type type, Type inter)
    {
        if (type.IsInterface)
            return false;
        if (inter.IsAssignableFrom(type))
            return true;
        if (type.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == inter))
            return true;
        return false;
    }