zoukankan      html  css  js  c++  java
  • c# 泛型类

    namespace console_泛型类
    {
        class Program
        {
            public static void Main(string[] args)
            {
                //泛型类封装不特定于特定数据类型的操作。
                //第一次看到感觉很抽象,要理解这句话中的 封装 和  操作 两个关键词
                //通俗讲就是泛型类就是对不确定数据类型的一些操作和封装
                UserInfo<Person> t = new UserInfo<Person>();
                t.GetPerproty();
                Console.ReadKey(true);
            }
        }
        // 创建个实体类测试
        class Person{
            public string Name{get{return "hah";}}
            public string Sex{get; set;}
            public int Age{get; set;}
            private int _count;
            public readonly string Weight;
            public struct t{}
            
            public void test(){Console.WriteLine(this.Name);}
            public void test2(){}
            private void Test3(){}
            protected void test4(){}
            
        }
        class UserInfo<T> where T : new() {
            public void GetPerproty(){
                //实例一个新的操作对象 注意用new 进行限制一个默认无参构造函数
                T t = new T();
                //获取type
                Type type = t.GetType();
                //获取实体类的属性
                Console.WriteLine("==============Properties=============");
                PropertyInfo[] ps = type.GetProperties();
                foreach (PropertyInfo p in ps) {
                    //可以看到只能获取pubulic公开的 readonly也不可以, 确切说应该是至少实现一个访问器的字段
                    Console.WriteLine("p.Name-{0}, p.canRead-{1}, p.canWrite-{2}", p.Name, p.CanRead, p.CanWrite);
                }
                //获取Members,获取所有的方法,属性,接口,结构等等
                Console.WriteLine("==============Members=============");
                MemberInfo[] ms = type.GetMembers();
                foreach (MemberInfo m in ms) {
                    Console.WriteLine(m.Name);
                }
                Console.WriteLine("==============Methods=============");
                MethodInfo[] mi = type.GetMethods();
                foreach (MethodInfo m in mi) {
                    Console.WriteLine(m.Name);
                }
                Console.WriteLine("==============RuntimeMethods=============");
                IEnumerable<MethodInfo> mm = type.GetRuntimeMethods();
                foreach (MethodInfo m in mi) {
                    Console.WriteLine(m.Name);
                }
                Console.WriteLine("==============Property SetValue=============");
                //设置其中一个值
                PropertyInfo p1 = type.GetProperty("Name");
                Console.WriteLine(p1.Name);
                MethodInfo m1 = type.GetMethod("test");
                m1.Invoke(t, null);
                
            }
        }
    }

     

  • 相关阅读:
    AcWing 1059. 股票买卖 VI Leetcode714. 买卖股票的最佳时机含手续费 dp
    AcWing 1058. 股票买卖 V Leetcode309. 最佳买卖股票时机含冷冻期
    Js取float型小数点后两位数的方法
    浏览器退 事件
    微信中得到的GPS经纬度放在百度,腾迅地图中不准的原因及处理
    dropdownlist 控件的判断
    有一个无效 SelectedValue,因为它不在项目列表中。
    CSS从大图中抠取小图完整教程(background-position应用)
    去掉 input type="number" 右边图标
    页面中星号与字体对齐
  • 原文地址:https://www.cnblogs.com/alplf123/p/7873902.html
Copyright © 2011-2022 走看看