對不起,如果標題不反映我真正想要的。如何在給對象作爲參數時賦值給屬性類?
我正在創建一個通用類,用於選擇,更新,插入和刪除數據庫中的日期。
基本上,我想要一個函數,讓我回到ObservableCollection <「可以是任何東西」> ==>凡什麼是類而不是字符串。我想知道是否有可能做到這一點,如果是的話,請幫助我如何做到這一點。
這是我的出發點:
//類
public static ObservableCollection<ContactPerson> contactPersons = new ObservableCollection<ContactPerson>();
public static ObservableCollection<ContactPerson> getContactPerson()
{
contactPersons = (ObservableCollection<ContactPerson>)DBConnection.GetDataOutDatabase(typeof(ContactPerson), "Contactpersoon");
return contactPersons;
}
// b類
public static Object GetDataOutDatabase(Type myType,String table)
{
ObservableCollection<Object> objecten = new ObservableCollection<Object>();
string sql = "SELECT * FROM " + table;
DbDataReader reader = Database.GetData(sql);
while (reader.Read())
{
objecten.Add(Create(myType, reader));
}
return objecten;
}
private static Object Create(Type myType, IDataRecord record)
{
PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
for (int i = 0; i < myPropertyInfo.Length; i++)
{
PropertyInfo myPropInfo = (PropertyInfo)myPropertyInfo[i];
String name = myPropInfo.Name;
Type type = myPropInfo.PropertyType;
}
return null;
}
而這就是我最終想要得到的。這可能嗎?
//ContactPerson cp = new ContactPerson();
//cp.ID = (record["ID"].ToString());
//cp.Name = record["Name"].ToString();
//cp.Company = record["Company"].ToString();
//cp.JobTitle = new ContactPersonTitle()
//{
// Name = record["JobTitle"].ToString(),
//};
//cp.JobRole = new ContactPersonType()
//{
// Name = record["JobRole"].ToString(),
//};
//cp.City = record["City"].ToString();
//cp.Email = record["Email"].ToString();
//cp.Phone = record["Phone"].ToString();
//cp.Cellphone = record["Cellphone"].ToString();
非常感謝!
我想這代碼,它在這部分崩潰 properties.ToList()的ForEach(項目=> 了var屬性,我得到的所有屬性和returnVal設置空 – denderp
每個值我認爲問題出事實上我有2個屬性,我不想用這個函數,我試圖去掉var屬性的一些屬性,但是沒有.remove函數,它可以是這樣的問題,所以是的我如何從var屬性中刪除索引,如果它等於我指定的類型? – denderp
在這種情況下,我會將if語句包裝在properties.tolist linq表達式中的try catch塊中,如果您不想吞下異常我會建議簡單地記錄它,這將允許你使用的屬性被設置,而你不屬於的屬性將保持爲空,而不是n試圖從列表中排除屬性 – theDarse