2011-05-11 265 views
1

我正在研究一個混合了流暢映射和自動映射的尖銳體系結構項目。一個基本的尖銳體系結構項目已經有一個方法(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) 

如果泛型類

ClassMap<type> 

存在返回true。

有什麼建議嗎?

回答

1

您可以使用Type.MakeGenericType泛型類型,因此假設你有一個包含所有映射的組件,你可以這樣做:

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

您是否考慮映射所有的類,但是使用Mapping*Override*作爲您想顯式映射的類(而不是常規流暢映射)?