创建一个变量以适合所有类类型

时间:2014-08-31 11:43:18

标签: c# class

是否可以创建一个代表许多类对象的变量并调用所有类中存在的函数? 我想创造这样的东西..

class A{
    void DoSomething(){
        //some code
    }
}

class B{
    void DoSomething(){
        //some code
    }
}

class Controller{
    public ClassType theObject;
    public void DoSomething(){
        theObject.DoSomething();
    }
}

class Main{
    public static void main(){
        A objectA = new A();
        B objectB = new B();
        Controller objectC = new Controller();

        objectC.theObject = objectA;
        objectC.DoSomething();

        objectC.theObject = objectB;
        objectC.DoSomething();
    }
}

是否有人知道如何执行此操作(更改类ClassType中的Controller的关键字)或我需要使用哪个关键字来搜索此类内容?

2 个答案:

答案 0 :(得分:3)

您可以创建Interface,让A和B类都实现它。

interface ICanDoSomething {
    void DoSomething();
}

class A : ICanDoSomething {
    void DoSomething(){
        //some code
    }
}

class B : ICanDoSomething{
    void DoSomething(){
        //some code
    }
}

class Controller {
    public ICanDoSomething theObject;
    public void DoSomething(){
        theObject.DoSomething();
    }
}

....

答案 1 :(得分:0)

我试图尽可能地保持答案与您的代码相似。您正在寻找的是所谓的接口。作为一个非常基本的解释,实现接口的类需要为接口中定义的每个方法提供代码。因此,通过多态,您可以将具体类的实例(例如AB)分配给ClassType,这是您的界面。然后,您可以调用当前已分配的对象的接口中定义的任何方法。

interface ClassType
{
    void DoSomething();
}

class A : ClassType
{
    void DoSomething()
    {
        //some code
    }
}

class B : ClassType
{
    void DoSomething()
    {
        //some code
    }
}

class Main
{
    public static void main()
    {
        A objectA = new A();
        B objectB = new B();
        ClassType objectC;

        objectC = objectA;
        objectC.DoSomething();

        objectC = objectB;
        objectC.DoSomething();
    }
}