C#|将新类分配给接口对象

时间:2018-04-22 17:34:12

标签: c#

以下是我目前的代码,问题如下:

class Program
{
    static void Main(string[] args)
    {
        var obj1 = new A();
        obj1.DoIt();
        obj1.SetFlyBehavior(new BehaviorB());
        obj1.DoIt();

        string input = Console.ReadLine();
    }
};

class BaseOfA
{
    protected ObjectBehavior behavior;

    public void DoIt()
    {
        behavior.DoIt();
    }

    public void SetBehavior(ObjectBehavior ob) {
      behavior = ob;  
    }

};

class A : BaseOfA {
    public A() {
        behavior = new BehaviorA(); 
    }
}

interface ObjectBehavior {
    void DoIt();
}

class BehaviorA : ObjectBehavior {
    void ObjectBehavior.DoIt() {
        Console.WriteLine("Behavior: A");
    }
}

class BehaviorB : ObjectBehavior {
    void ObjectBehavior.DoIt() {
        Console.WriteLine("Behavior: B");
    }
}

现在我的问题是,在这种情况下,我将如何使其工作,以便我可以将BehaviorABehaviorB分配给实例obj1,只要它们实现{ {1}}?

1 个答案:

答案 0 :(得分:0)

您正在调用obj.SetFlyBehaviour此方法未在任何地方定义。您在BaseOfA上定义的方法称为SetBehaviour。一旦修复了,你提供的代码就可以编译好了