मेरे पास निम्न कोड है:कैसे बताएं कि कोई PropertyInfo किसी विशेष enum प्रकार का है या नहीं?
public class DataReader<T> where T : class
{
public T getEntityFromReader(IDataReader reader, IDictionary<string, string> FieldMappings)
{
T entity = Activator.CreateInstance<T>();
Type entityType = entity.GetType();
PropertyInfo[] pi = entityType.GetProperties();
string FieldName;
while (reader.Read())
{
for (int t = 0; t < reader.FieldCount; t++)
{
foreach (PropertyInfo property in pi)
{
FieldMappings.TryGetValue(property.Name, out FieldName);
Type genericType = property.PropertyType;
if (!String.IsNullOrEmpty(FieldName))
property.SetValue(entity, reader[FieldName], null);
}
}
}
return entity;
}
}
जब मैं Enum
प्रकार के क्षेत्र में जाता हूं, या इस मामले में NameSpace.MyEnum
, मैं कुछ विशेष करना चाहता हूं। मैं बस SetValue
नहीं कर सकता क्योंकि डेटाबेस से आने वाला मान आइए "एम" कहें और Enum
में मान "श्री" है। तो मुझे एक और विधि कॉल करने की जरूरत है। मुझे पता है! विरासत प्रणाली सही है?
तो मैं कैसे निर्धारित करूं कि PropertyInfo
आइटम किसी विशेष गणना प्रकार का होता है?
तो उपरोक्त कोड में मैं पहले यह जांचना चाहता हूं कि PropertyInfo
प्रकार एक विशिष्ट enum का है या नहीं और फिर यह मेरी विधि को कॉल करता है और यदि नहीं तो बस SetValue
को चलाने की अनुमति दें।
बजाय है के साथ उपयोग करते हैं, बस अपने जेनेरिक में "नई" बाधा जोड़ें: "जहां टी: कक्षा, नया()"। फिर बस "टी इकाई = नया टी()" का प्रयोग करें। इस तरह, आप संकलन समय पर पैरामीटर रहित कन्स्ट्रक्टर की आवश्यकता को लागू कर सकते हैं। – Brannon
@ ब्रैनन, धन्यवाद कि यह एक महान टिप है। जब मैं काम में जाऊंगा तो करूँगा। धन्यवाद। – griegs