I've a requirement in which i need to get the variables names of the constructor in my class. I tried it using c# reflection, but constructorinfo does not give sufficient information. As it only provides the datatype of the parameters but i want the names, ex
class a
{
public a(int iArg, string strArg)
{
}
}
Now i wa开发者_如何学JAVAnt "iArg" and "strArg"
Thanks
If you call ConstructorInfo.GetParameters()
, then you will get back an array of ParameterInfo
objects, which has a Name
property containing the name of the parameter.
See this MSDN page for more information and a sample.
The following sample prints information about each parameter of class A's constructor:
public class A
{
public A(int iArg, string strArg)
{
}
}
....
public void PrintParameters()
{
var ctors = typeof(A).GetConstructors();
// assuming class A has only one constructor
var ctor = ctors[0];
foreach (var param in ctor.GetParameters())
{
Console.WriteLine(string.Format(
"Param {0} is named {1} and is of type {2}",
param.Position, param.Name, param.ParameterType));
}
}
The above sample prints:
Param 0 is named iArg and is of type System.Int32
Param 1 is named strArg and is of type System.String
I just checked MSDN for your question. As I see any ConstructorInfo
instance may provide you with a method GetParameters()
. This method will return a ParameterInfo[]
- and any ParameterInfo
has a property Name. So this should do the trick
ConstructorInfo ci = ...... /// get your instance of ConstructorInfo by using Reflection
ParameterInfo[] parameters = ci.GetParameters();
foreach (ParameterInfo pi in parameters)
{
Console.WriteLine(pi.Name);
}
you may check msdn GetParameters() for any additional information.
hth
精彩评论