
- //类
- public class Method
- {
- public string Father { get; set; }
- public string Chlidname { get; set; }
- public int? count { get; set; }
- public decimal? sum { get; set; }
- public decimal? max { get; set; }
- public double? min { get; set; }
- public double? Avg { get; set; }
- public void Hello()
- {
- Console.WriteLine("Hello------");
- }
- public void SayHello(string aa)
- {
- Console.WriteLine("Hello------"+aa);
- }
- private void SayHellod(string aa,int bb)
- {
- Console.WriteLine("Hello------" + aa);
- }
- public void SayHellodT<T>()
- {
- Console.WriteLine("Hello------" );
- }
- }
- static void Main(string[] args)
- {
- //使用反射可以根据字符串类型(类全名,类库名)
- //反射可以访问属性,而且可以访问私有属性,可以给私有属性赋值
- //反射可以访问字段,而且可以访问私有字段,可以给私有字段赋值
- //反射可以调用方法,而且可以调用私有方法
- Method method = new Method();
- //反射可以拿到属性
- //1拿到总属性
- var ytpe= method.GetType();
-
- //2拿到该对象里面的属性
- var ytpeinto = method.GetType().GetProperty("sum").PropertyType;
- var x = typeof(Method).GetProperty("sum").PropertyType;
- Console.WriteLine(ytpe +"-----" +ytpeinto);
-
- //3调用duix里面的方法
- //1用实例的对象来调用
- method.GetType().GetMethod("Hello").Invoke(method, null);//Invoke(对象名,参数(调用的东西为空就写null))
-
- //2用对象名调用
- typeof(Method).GetMethod("Hello").Invoke(method, null);
-
- //3调用有参数的值
- typeof(Method).GetMethod("SayHello").Invoke(method, new object[] { "354346" });
-
- //4调用对象里面的私有
- typeof(Method).GetMethod("SayHellod", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(method, new object[]{"5463",66});
-
- //5调用泛型类方法
- var typed = method.GetType().GetProperty("Avg").PropertyType;
- var TT = typeof(Method).GetMethod("SayHellodT");
- TT = TT.MakeGenericMethod(typed);
- TT.Invoke(method, null);
- }
- }
评价