2016-09-16 74 views
0

我知道如何在映射定義時忽略一個屬性。但是,我正在嘗試爲所有映射添加一個通用邏輯,以基於某些條件忽略屬性。爲此,我使用這樣的代碼。如何在映射定義後忽略屬性?

public static void ProcessMappings(this IMappingEngine engine) 
{ 
    var typeMaps = engine.ConfigurationProvider.GetAllTypeMaps(); 
    foreach (var typeMap in typeMaps) 
    { 
     if (typeof(MyClass).IsAssignableFrom(typeMap.DestinationType)) 
     { 
      // here let's say I want to ignore property "Property" 
     } 
    } 
} 

所以我的問題是,鑑於TypeMap一個實例,我怎麼可以設置屬性被忽略?

+0

我說,所創建的['Attribute'](https://msdn.microsoft.com/en-us/library /mt653979.aspx)。併爲您的屬性分配屬性。然後在你的ProcessMappings方法中使用它。 –

回答

1
var propInfo = typeMap.DestinationType.GetProperty("PropertyToIgnore"); 
if (propInfo != null) 
{ 
    typeMap.FindOrCreatePropertyMapFor(new AutoMapper.Impl.PropertyAccessor(propInfo)).Ignore(); 
} 

忽略方法用於忽略的屬性/構件

+0

謝謝,同時我也得到了類似的解決方案。 –

+0

我想實現這樣的東西,但automapper似乎沒有PropertyAccessor類了..任何建議? –