簡體   English   中英

確定泛型類是否實現類型

[英]Determine if Generic Class Implements Type

我正在一個將流利的映射和自動映射混合在一起的尖銳的體系結構項目。 一個基本的尖銳體系結構項目已經具有一種方法(AutoMappingConfiguration.ShouldMap),該方法確定是否應自動映射類型。 我的當前看起來像這樣:

    public override bool ShouldMap(System.Type type)
    {
        if (type == typeof(ActiveUser))
            return false;

        return type.GetInterfaces().Any(x =>
             x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IEntityWithTypedId<>));
    }

本質上,ActiveUser類型是使用流暢的映射來映射的,其他所有內容都是使用自動映射來映射的,當然,除了通用基類。 我現在要添加更流暢的映射類,並且真的不想繼續在此方法中添加if語句以排除它們。 我基本上需要方法

bool ShouldMap(System.Type type)

如果泛型類返回true

ClassMap<type> 

存在。

有什么建議么?

您可以使用Type.MakeGenericType創建泛型類型,因此假設您有一個包含所有可以執行的映射的程序集:

public bool ShouldMap(Assembly mappingAssembly, Type type)
{
    Type classMapType = typeof(ClassMap<>).MakeGenericType(type);
    return mappingAssembly.GetTypes().Any(t => t.IsSubclassOf(classMapType));
}

您是否考慮過映射所有類,但是對要顯式映射的類(而不是常規的流利映射)使用Mapping * Override *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM