public class Program
{
static string str="困";
static string str2
{
get { return str; }
set { str = value; }
}
static void StaticWriteString(string s)
{
Console.WriteLine("StaticWriteString:" + s);
}
static void StaticWriteString(string s,string s2)
{
Console.WriteLine("StaticWriteString:" + s);
Console.WriteLine("StaticWriteString:" + s2);
}
static int time = 5;
static void Main(string[] args)
{
if (time < 0)
{
Console.WriteLine("起床了");
Console.Read();
return;
}
Program p = (Program)Assembly.GetExecutingAssembly().CreateInstance("反射.Program");
Type t = p.GetType();
//反射字段
FieldInfo[] fi = t.GetFields(BindingFlags.Static|BindingFlags.NonPublic);
foreach (var v in fi)
{
if (v.FieldType.Equals(typeof(string)))
{
object obj = new object();
object value = new object();
value = v.GetValue(obj);
value = "想睡觉";
v.SetValue(obj, value);
}
}
//反射属性
PropertyInfo[] pi = t.GetProperties(BindingFlags.NonPublic | BindingFlags.Static|BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (var v in pi)
{
object obj = new object();
object value = new object();
MethodInfo getinfo = v.GetGetMethod(true);
value = getinfo.Invoke(obj, null);
MethodInfo setinfo = v.GetSetMethod(true);
value = setinfo.Invoke(obj, new string[]{"睡着了"});
value = getinfo.Invoke(obj, null);
}
//反射方法
MethodInfo[] mis = t.GetMethods(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (var v in mis)
{
Console.WriteLine(v.Name);
MethodBody mb = v.GetMethodBody();
ParameterInfo[] painfo = v.GetParameters();
if (painfo.Length == 0)
{
object obj = new object();
object value = new object();
value = v.Invoke(obj, args);
}
else
{
object[] parm = new object[painfo.Length];
for (int i = 0; i < painfo.Length;i++ )
{
Type tt = painfo[i].ParameterType;
if (tt.Equals(typeof(String)))
{
parm[i] = i.ToString();
}
else
if (tt.Equals(typeof(String[])))
{
time--;
}
}
object obj = new object();
object value = new object();
value = v.Invoke(obj, parm);
}
}
//Console.ReadKey();
}
}
c#反射
最新推荐文章于 2024-03-27 17:18:48 发布