我正在開發一種服務來收集來自許多遠程數據庫的數據並將其編譯到主數據庫。我有一個接口,其中包含兩個數據庫之間通用的數據。該接口也可以作爲我的Model和ViewModel之間的鏈接。在構造函數中使用反射和接口來初始化C#
我想從RemoteDatabase的一個實例中獲取數據,並將所有這些數據放入MasterDatabase的一個實例中。
public interface IInterface
{
//Common interface properties in both databases
long PK { get; set; }
Nullable<long> RUN_ID { get; set; }
string Recipe_Name { get; set; }
string Notes { get; set; }
//Lots more properties from a database
}
class RemoteDatabase : IInterface
{
//Common interface properties in both databases
public long PK { get; set; }
public Nullable<long> RUN_ID { get; set; }
public string Recipe_Name { get; set; }
public string Notes { get; set; }
//Lots more properties from a database
}
class MasterDatabase : IInterface
{
//Additional properties that Remote Database doesn't have
public int locationFK { get; set; }
//Common interface properties from database
public long PK { get; set; }
public Nullable<long> RUN_ID { get; set; }
public string Recipe_Name { get; set; }
public string Notes { get; set; }
//Lots more properties from a database
public MasterDatabase(IInterface iInterface)
{
var interfaceProps = typeof(IInterface).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo p in interfaceProps)
{
p.Name;
}
}
}
我想只投的對象,而是提供了一個無效轉換異常,我的理解(雖然他們有共同的祖先,這並不意味着他們可以施放狗==動物,魚類動物== ,但狗!=魚,但我想要的是獲得在IAnimal中定義的共同屬性)。
由於無法投射,我想使用反射,以便如果界面更新,則MasterDatabase類中的所有新對象都將自動更新。我使用反射來獲取界面中的所有屬性,但是現在如何使用propertyInfo.name來獲取MasterDatabase類中的值。
也許我錯過了一些明顯的東西,或者有更好的方法來做到這一點。我感謝任何幫助或建議。
預先感謝您。
你有沒有考慮automapper:您傳遞的值應該使用在構造函數的參數對應的
GetValue
調用來檢索? http://visualstudiomagazine.com/articles/2012/2012/02/01/simplify-your-projections-with-automapper.aspx – Colin