for(int i=0;i<types.GetLength(0);++i) { result+="\t "+i+":"+types[i].Name+" "+" "+Environment.NewLine; // Get the public methods. MethodInfo[] myArrayMethodInfo=types[i].GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly); txtMethods.Text=txtMethods.Text+Environment.NewLine+"The number of public methods in "+types[i].Name+" is "+myArrayMethodInfo.Length+Environment.NewLine; // get all the methods. txtMethods.Text=txtMethods.Text+getMethodInfo(myArrayMethodInfo); /* // Get the nonpublic methods. MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly); Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length); // Display information for all methods. LabelFile.Text=DisplayMethodInfo(myArrayMethodInfo1); */ } foreach(Type myType in types) { // Get the public properties. PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance); Console.WriteLine("The mumber of public properties in "+myType.Name+" is {0}.", myPropertyInfo.Length); // Display the public properties. getPropertyInfo(myPropertyInfo); // Get the nonpublic properties. PropertyInfo[] myPropertyInfo1 = myType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance); txtMethods.Text=txtMethods.Text+Environment.NewLine+("The number of NonPublic properties in "+myType.Name+" is "+ myPropertyInfo1.Length)+Environment.NewLine; // Display all the nonpublic properties. txtMethods.Text=txtMethods.Text+getPropertyInfo(myPropertyInfo1); } txtTypes.Text=result; } catch(Exception ee) { throw ee; }
} } /// <summary> /// get Method informations from MethodInfo[] Array: /// </summary> /// <param name="myArrayMethodInfo"></param> /// <returns></returns> public string getMethodInfo(MethodInfo[] myArrayMethodInfo) { string methodStr=""; /// ///getinformation for all methods. for(int i=0;i<myArrayMethodInfo.Length;i++) { MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i]; methodStr+="Method "+i+" :"+ myMethodInfo.Name+Environment.NewLine; } return methodStr; } /// <summary> /// get properties information from PropertyInfo[] Array: /// </summary> /// <param name="myPropertyInfo"></param> /// <returns></returns> public string getPropertyInfo(PropertyInfo[] myPropertyInfo) { string propStr=""; // Display information for all properties. for(int i=0;i<myPropertyInfo.Length;i++) { PropertyInfo myPropInfo = (PropertyInfo)myPropertyInfo[i]; propStr+="property "+i+":"+ myPropInfo.Name+" type:"+ myPropInfo.PropertyType+Environment.NewLine; } return propStr; }
怎樣能將它的屬性的值也能取出來呢? 如: class aaa { private string _a; private string _b; private int _id; public string Number { get{return this._a;} set{this._a = value;} } public string Name { get{return this._b;} set{this._b = value;} } public int ID { get{return this._id;} set{this._id = value;} } }aaa mya = new aaa(); mya.Number = "0001"; mya.Name = "123"; mya.ID = "0001";如何將我已實例化的mya對象的各個屬性與屬性值取出來。
{ string fileName=labelFile.Text.Trim();
string result="";
txtMethods.Text="";
txtTypes.Text=""; if(File.Exists(fileName))
{
try
{
Assembly assembly=Assembly.LoadFrom(fileName);
Type[] types=assembly.GetTypes();
result="The Assembly contains the following types :"+Environment.NewLine;
for(int i=0;i<types.GetLength(0);++i)
{
result+="\t "+i+":"+types[i].Name+" "+" "+Environment.NewLine; // Get the public methods.
MethodInfo[] myArrayMethodInfo=types[i].GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
txtMethods.Text=txtMethods.Text+Environment.NewLine+"The number of public methods in "+types[i].Name+" is "+myArrayMethodInfo.Length+Environment.NewLine;
// get all the methods.
txtMethods.Text=txtMethods.Text+getMethodInfo(myArrayMethodInfo);
/*
// Get the nonpublic methods.
MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
// Display information for all methods.
LabelFile.Text=DisplayMethodInfo(myArrayMethodInfo1);
*/ } foreach(Type myType in types)
{
// Get the public properties.
PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance);
Console.WriteLine("The mumber of public properties in "+myType.Name+" is {0}.", myPropertyInfo.Length);
// Display the public properties.
getPropertyInfo(myPropertyInfo);
// Get the nonpublic properties.
PropertyInfo[] myPropertyInfo1 = myType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
txtMethods.Text=txtMethods.Text+Environment.NewLine+("The number of NonPublic properties in "+myType.Name+" is "+ myPropertyInfo1.Length)+Environment.NewLine;
// Display all the nonpublic properties.
txtMethods.Text=txtMethods.Text+getPropertyInfo(myPropertyInfo1);
} txtTypes.Text=result;
}
catch(Exception ee)
{
throw ee;
}
} } /// <summary>
/// get Method informations from MethodInfo[] Array:
/// </summary>
/// <param name="myArrayMethodInfo"></param>
/// <returns></returns>
public string getMethodInfo(MethodInfo[] myArrayMethodInfo)
{
string methodStr="";
///
///getinformation for all methods.
for(int i=0;i<myArrayMethodInfo.Length;i++)
{
MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i];
methodStr+="Method "+i+" :"+ myMethodInfo.Name+Environment.NewLine;
}
return methodStr;
} /// <summary>
/// get properties information from PropertyInfo[] Array:
/// </summary>
/// <param name="myPropertyInfo"></param>
/// <returns></returns>
public string getPropertyInfo(PropertyInfo[] myPropertyInfo)
{
string propStr="";
// Display information for all properties.
for(int i=0;i<myPropertyInfo.Length;i++)
{
PropertyInfo myPropInfo = (PropertyInfo)myPropertyInfo[i];
propStr+="property "+i+":"+ myPropInfo.Name+" type:"+ myPropInfo.PropertyType+Environment.NewLine;
}
return propStr;
}
如:
class aaa
{
private string _a;
private string _b;
private int _id;
public string Number
{
get{return this._a;}
set{this._a = value;}
} public string Name
{
get{return this._b;}
set{this._b = value;}
} public int ID
{
get{return this._id;}
set{this._id = value;}
}
}aaa mya = new aaa();
mya.Number = "0001";
mya.Name = "123";
mya.ID = "0001";如何將我已實例化的mya對象的各個屬性與屬性值取出來。