साथ निष्पादित मैं निम्नलिखित कोड:जेनेरिक विधि एक रनटाइम प्रकार
public class ClassExample
{
void DoSomthing<T>(string name, T value)
{
SendToDatabase(name, value);
}
public class ParameterType
{
public readonly string Name;
public readonly Type DisplayType;
public readonly string Value;
public ParameterType(string name, Type type, string value)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentNullException("name");
if (type == null)
throw new ArgumentNullException("type");
this.Name = name;
this.DisplayType = type;
this.Value = value;
}
}
public void GetTypes()
{
List<ParameterType> l = report.GetParameterTypes();
foreach (ParameterType p in l)
{
DoSomthing<p.DisplayType>(p.Name, (p.DisplayType)p.Value);
}
}
}
अब, मैं जानता हूँ कि मैं नहीं कर सकता DoSomething() वहाँ इस सुविधा का उपयोग करने के लिए किसी भी अन्य तरीका है?
बस एक पकड़, पी। वैल्यू एक स्ट्रिंग है इसलिए जब तक p.DisplayType टाइपफ (स्ट्रिंग) होने के लिए होता है तब तक चाल विफल हो जाएगी। – stevemegson
शर्म की बात यह एकमात्र समाधान है, मेह –
अच्छा, मुझे लगता है कि आप 4.0 में गतिशील उपयोग कर सकते हैं और यह सही जेनेरिक तर्क प्रकार का अनुमान लगाएगा, लेकिन मुझे अभी तक इसे सत्यापित करने का मौका नहीं मिला है। ऐसा नहीं है कि यह उपरोक्त कोड की तुलना में कवर के तहत कुछ भी अलग कर रहा है, लेकिन शायद यह है। –