आप प्रकार के सामान्य पैरामीटर के माध्यम से पुनरावृत्त कर सकते हैं, और प्रत्येक पैरामीटर के लिए, आप बाधा प्रकारों के लिए पूछ सकते हैं।
आप इस का उपयोग कर कार्य करें:
इस कोड है, जो आप LINQPad के माध्यम से चला सकते हैं पर एक नज़र डालें:
void Main()
{
Type type = typeof(TestClass<>);
foreach (var parm in type.GetGenericArguments())
{
Debug.WriteLine(parm.Name);
parm.GetGenericParameterConstraints().Dump();
}
}
public class TestClass<T>
where T : Stream
{
}
उत्पादन होता है:
T
Type [] (1 item)
typeof (Stream)
अन्य बाधाओं को खोजने के लिए इस तरह के new()
के रूप में, आप उपयोग कर सकते हैं .GenericParameterAttributes
झंडे enum, उदाहरण:
void Main()
{
Type type = typeof(TestClass<>);
foreach (var parm in type.GetGenericArguments())
{
Debug.WriteLine(parm.Name);
parm.GetGenericParameterConstraints().Dump();
parm.GenericParameterAttributes.Dump();
}
}
public class TestClass<T>
where T : new()
{
}
आउटपुट कौन सा:
T
Type [] (1 item)
typeof (Stream)
DefaultConstructorConstraint
स्रोत
2011-03-25 13:11:31
बहुत बहुत धन्यवाद! महान! –