我有共享驗證邏輯,很大程度上取決於自定義屬性,所以我需要檢查每種類型。一般鑄造對象它是'真正'類型
實例(要檢查的)被取出用於每個驗證訂戶:
var instance = this.ValidationProvider.GetInstanceForSubscriber(validationSubscriber);
凡validationSubscriber
是使用這些值的枚舉:
人, 檢查
此時,GetInstanceForSubscriber
返回類型對象的實例:
public object GetInstanceForSubscriber(ValidationSubscribers validationSubscriber)
{
switch (validationSubscriber)
{
case ValidationSubscribers.Person:
return new Person();
case ValidationSubscribers.Checks:
return new Checks();
default:
return null;
}
}
調用此方法後,我檢查類型:
var instanceType = instance.GetType();
然後,我讀了(自定義)屬性:
var attributes = propertyInfo.GetCustomAttributes(true);
我再返回IEnumerable<PropertyAttribute>
列表包含只有我的自定義屬性,將驗證範圍限制爲僅需要的(這是FYI,因爲與此問題不太相關)。
問題
由於instance
是類型的對象,它不包含任何我的自定義屬性(邏輯),所以我需要將其轉換爲正確的類類型。
達到此目的的最佳方法是什麼?
您是否具有Enum值和類名稱的完全匹配名稱? –
你爲什麼bell it它不包含你的屬性? – CSharpie
@ShantanuGupta:不,我不贊成,因爲這可能會變得很難維持(而且非常不值得信任)。 – Spikee