2017-05-07 27 views
1

我正在構建一個IApplicationModelConvention,需要知道類型是否「複雜」。如何確定Action參數是否應該被視爲'Complex'?

我第一次嘗試是實現一個輔助方法,如:

public static bool IsComplex(this Type type) 
    { 
     Type[] handledTypes = new Type[] { typeof(DateTime), typeof(DateTimeOffset), typeof(string) }; 

     return !type.GetTypeInfo().IsPrimitive && !handledTypes.Any(t => t.Equals(type)); 
    } 

但是這種方法不檢索用戶添加自定義的轉換。 (我甚至不知道如何實現這些自定義轉換器)

回答

1

我最終挖掘了aspnet核心mvc源代碼。 ModelMetadata當沒有爲字符串轉換定義任何TypeConverter時,某種類型被視爲「複雜」:

var isComplex = !TypeDescriptor.GetConverter(param.ParameterInfo.ParameterType).CanConvertFrom(typeof(string)); 
相關問題