/ / Ako pridať triedu <list> z riadku údajov s názvom vlastnosti bez definície? - c #, zoznam, trieda, vlastnosti

Ako pridať triedu <list> z riadku údajov s názvom vlastnosti bez definície? - c #, zoznam, trieda, vlastnosti

Moja angličtina je slabá.

Chcem pridať triedu do zoznamu triedy, ale nechcem definovať názov nehnuteľnosti.

Ex. // Vyhlásenie triedy

public class LSale
{
public int id {get;set;}
public string name {get;set}
}

Starý kód

public DataTable dt = new DataTable();
public List<LSale> mLSale {get; set;}

foreach ( DataRow t in dt.Rows)
{
mLSale.Add( new LSale {
id = Convert.ToInt32(t["id"].ToString()) ,
name = = t["name"].ToString() });
}

Ako pridať LSale bez definovania poľa id a meno ale nájsť z majetku alebo poľa v triede LSale.

Príklad (tento kód nie je správny)

Type mType = typeof( LSale );
LSale mSale = nil;
foreach ( DataRow t in dt.Rows )
{
foreach( Propertyinfo mp in mType.GetProperties() )
{
mSale[mp].Value = t[mp].Value;

}
mLSale.Add( new mSale );
}

Prosím pomôžte.

odpovede:

0 pre odpoveď č. 1

môžete použiť odraz

public T MapObjects<T, Y>(Y item)
{
T _item = Activator.CreateInstance<T>();

foreach (PropertyInfo propertyInfo in typeof(Y).GetProperties())
{

if (typeof(T).GetProperty(propertyInfo.Name, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public) != null)
typeof(T).GetProperty(propertyInfo.Name, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public).SetValue(_item, propValue);
}

return _item;
}

kde T je typ určenia a Y je zdrojový typ, tu je jedna podmienka, názvy vlastníkov typu zdrojového a cieľového typu musia byť rovnaké.