【发布时间】:2015-06-12 17:14:14
【问题描述】:
我将如何使用 Autofac 实现等效输出123。
我查看了以下内容,但我认为它不太符合我想要实现的目标。
http://docs.autofac.org/en/latest/advanced/adapters-decorators.html
也许有人可以启发我 - 这是 decorator 吗?
using System;
namespace Prototypes.Decorator
{
public class Program
{
static void Main()
{
new Class1(new Class2(new Class3(null))).Do();
Console.ReadKey(true);
}
}
public interface ICommand
{
void Do();
}
public abstract class BaseClass : ICommand
{
private readonly ICommand _command;
protected BaseClass(ICommand command)
{
_command = command;
}
public abstract void Do();
public void CallNext()
{
if (_command != null)
{
_command.Do();
}
}
}
public class Class1 : BaseClass
{
public Class1(ICommand command) : base(command)
{
}
public override void Do()
{
Console.Write(1);
CallNext();
}
}
public class Class2 : BaseClass
{
public Class2(ICommand command) : base(command)
{
}
public override void Do()
{
Console.Write(2);
CallNext();
}
}
public class Class3 : BaseClass
{
public Class3(ICommand command) : base(command)
{
}
public override void Do()
{
Console.Write(3);
CallNext();
}
}
}
如果基础构造函数上还有另一个接口,那该怎么办?像protected BaseClass(ICommand command, ILog log) { ... }这样似是而非的东西
【问题讨论】:
标签: c# inversion-of-control decorator autofac