我通過字典成方法:分配對象的一類可變
Dictionary<string, object> vehicles
字典的值可以是命名Vehicle
類實例或一個類的實例,從Vehicle
繼承,命名Truck
。
我有一個DataTable
,然後我使用字段行值來提取字典值,使用反射。
Vehicle v = (Vehicle)vehicles[dt.Rows[0]["Reference"].ToString()]
PropertyInfo vehicleInfo = typeof(Vehicle).GetProperty("Height");
string propertyVal = vehicleInfo.GetValue(t, null).ToString();
唯一的問題是,如果我嘗試從類Truck
提取字段值和字段不是從Vehicle
繼承,然後vehicleInfo
不是一個對象,由於是無法獲得的財產。
有沒有一種方法可以動態地使用上述的Vehicle
或Truck
類屬性?還是需要完全不同的方法?
你能解釋一下爲什麼你使用反射來訪問'Vehicle'的屬性? – Chris
這個問題真的是*你如何確定你想得到的屬性?*這意味着所有這些類型的知識,這是半連接訪問他們的方式很奇怪。您可能在這裏遇到了X/Y問題。無論你想要完成什麼,最有可能使用不同的方法更好地實現。將它限制爲這個,你可以使用新的[模式匹配語言改進](http://blog.somewhatabstract.com/2017/01/23/c7-pattern-matching/)或更老的'var xy = x as Ÿ; if(x!= null)...'BS ... – Will