zoukankan      html  css  js  c++  java
  • 泛型约束where条件的使用(通过类型参数动态反射创建实例)

    定义抽象的人类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1

    {   public  abstract class  person

        {

       public abstract  string ting();    public abstract  string shuo();

        }

    }

    定义子类 girl 和boy 类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1 {  

       public class girl : person  

       {

            public override string ting()         {             return "girl ting";         }

            public override string shuo()         {             return "girl shuo";         }  

       }

    }

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1 {  

       public class boy: person  

       {

            public override string ting()         {             return "boy ting";         }

            public override string shuo()         {             return "boy shuo";         }  

       }

    }

    定义模具类可以 可以返回一个boy或者girl的实例

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1 {

      public  class zhongjian     {    

       public static person CreatePerson<T>() where T:person

          {

            person  p = Activator.CreateInstance(typeof(T)) as person;         return p;        

             }

        }

    }

    模拟环境类 program

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace ConsoleApplication1

    {  

       class Program  

       {      

       static void Main(string[] args)      

       {       person p= zhongjian.CreatePerson<girl>();            string shuo= p.shuo();            string ting=  p.ting();            Console.WriteLine(shuo+" "+ting);          

      Console.ReadKey();     

        }   

      }

    }

  • 相关阅读:
    疯子在思考之-异常与return 的差别
    MANIFEST.MF 文件内容完全详解
    疯子奉献-一个符号惹的祸
    疯子在思考之-从日志想到的软件架构
    疯子在思考之java 线程的那点事儿
    linux 自动重启tomcat 脚本
    tomcat 优化及错误All threads (10) are currently busy, waiting. Increase maxThreads错误
    log4j继承
    substring 陷阱
    每天一个随笔
  • 原文地址:https://www.cnblogs.com/kexb/p/3651856.html
Copyright © 2011-2022 走看看