面试忽悠

突然想起了一个面试问题:现在有这么一个需求,需要设计一个统一的接口来实现导出excel功能,如何在不改变统一接口的情况下,满足当新增对象也要能需要导出功能的情况下如何做到只需要针对新增对象实现导出功能就可以了。首先想到的就是反射,于是动手写个个大概的实现方式。具体如下:

1、定义一个统一的接口

    public interface Ibase
    {
        //定义需要事项的方法
         void print();
    }

2、分别实现两个不同的类来实现接口

public class one : Ibase
    {
        public void print()
        {
            System.Console.WriteLine("this is print one");
        }
    }
 public class two : Ibase
    {
        public void print()
        {
            System.Console.WriteLine("this is print two");
        }
    }

3、实现统一入口

public class writeprint
    {
        public void print(string typeString) {
            Type t = Type.GetType(typeString);
            Object o = Activator.CreateInstance(t)  ;
            MethodInfo MyMethod = o.GetType().GetMethod("print");
            MyMethod.Invoke(o, null);
        }

        public void print2(string typeString) {
            Type t = Type.GetType(typeString);
            Ibase o = Activator.CreateInstance(t) as Ibase;
            o.print();

        }
    }

4、入口

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

namespace CommonExpres
{
    class Program
    {
        static void Main(string[] args)
        {
            writeprint p = new writeprint();
            p.print("CommonExpres.one");
            p.print("CommonExpres.two");

            System.Console.ReadKey();
        }
    }
}

5、效果

 

posted on 2020-08-14 18:58  枫的救赎  阅读(91)  评论(0)    收藏  举报

导航