/ / डेटा पंक्ति से <list> वर्ग को गैर परिभाषित संपत्ति नाम के साथ कैसे जोड़ें? - सी #, सूची, वर्ग, गुण

गैर परिभाषित संपत्ति नाम के साथ डेटा पंक्ति से <list> कक्षा को कैसे जोड़ें? - सी #, सूची, वर्ग, गुण

मेरी अंग्रेजी खराब है।

मैं कक्षा वर्ग में कक्षा जोड़ना चाहता हूं लेकिन मैं संपत्ति का नाम परिभाषित नहीं करना चाहता हूं।

पूर्व। // कक्षा घोषित करें

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

// पुराना कोड

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() });
}

आईडी और नाम फ़ील्ड को परिभाषित न करने के साथ LSale को कैसे जोड़ें लेकिन एलएसएएल कक्षा में संपत्ति या क्षेत्र से खोजें।

उदाहरण (यह कोड सही नहीं है)

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 );
}

कृपया मदद कीजिए।

उत्तर:

जवाब के लिए 0 № 1

आप प्रतिबिंब का उपयोग कर सकते हैं

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;
}

जहां टी गंतव्य प्रकार है और वाई स्रोत प्रकार है, यहां एक शर्त है, स्रोत और गंतव्य प्रकारों के संपत्ति नाम समान होना चाहिए।