zoukankan      html  css  js  c++  java
  • 父类操作子类

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using System.Collections.ObjectModel;
    namespace 泛基
    {
        class Program
        {
            static void Main(string[] args)
            {
                MyBase<MyClass> c = new MyClass();
                c.say();
                Console.ReadLine();
            }
        }
    
        //父类操作子类(因为父类不知道被谁继承)
        //父类的静态属性,可以在子类的Static构造函数中初始化为不同的值
     public abstract class MyBase<T> where T :MyBase <T> //被人肉编译器 @vczh 发现少写了<T>
    
    {
    
        public static string DataForThisType {get;set;}
        public static T Instance{get;protected set;}
        //老赵说的邪恶的部分:让父类操作子类出现了
        public static readonly Dictionary<string, MemberInfo> Members
            =typeof(T)
                .GetMembers()
                .ToDictionary(x=>x.Name);
    
        public void say() {
    
            foreach (var kv in Members)
            {
                Console.WriteLine(kv.Key+"="+kv.Value);
            }
        }
        
             
    }
    
    
    
    public class MyClass:MyBase<MyClass>
    {
    
        static MyClass() //第一次new的时候执行,并且只执行一次
        {
            Console.WriteLine("static MyClass()");
            DataForThisType =string.Format(
                "MyClass got {0} members",Members.Count);
            Instance = new MyClass();
        }
    
    }
    
    }
  • 相关阅读:
    failed to load the jni shared library jvm
    记一个简单的保护if 的sh脚本
    linux添加自定义的命令!
    fc-san
    DDN
    Everything search syntax
    启动 Apache2.2 的问题
    tomcat4 请求的处理——初步分析
    404 Not Found !
    浏览器 的 session 如何保持?!
  • 原文地址:https://www.cnblogs.com/tiancai/p/6610184.html
Copyright © 2011-2022 走看看