以下是我目前的代码,问题如下:
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");
}
}
现在我的问题是,在这种情况下,我将如何使其工作,以便我可以将BehaviorA
和BehaviorB
分配给实例obj1
,只要它们实现{ {1}}?
答案 0 :(得分:0)
您正在调用obj.SetFlyBehaviour
此方法未在任何地方定义。您在BaseOfA上定义的方法称为SetBehaviour
。一旦修复了,你提供的代码就可以编译好了