class Program
{
interface ILogger
{
void Log(string message);
}
class Logger : ILogger
{
public void Log(string message)
{
Console.WriteLine(message);
}
}
interface IPropertyInject
{
ILogger PropertyLog { get; set; }
}
class PropertyInject : IPropertyInject
{
public ILogger PropertyLog { get; set; }
}
class ConstuctorInject
{
private ILogger ConstuctorLog;
public ConstuctorInject(ILogger log)
{
ConstuctorLog = log;
}
public void Log()
{
ConstuctorLog.Log("我是构造函数注入");
}
}
static void Main(string[] args)
{
var container = new WindsorContainer();
container.Register(Component.For<ILogger>().ImplementedBy<Logger>());
container.Register(Component.For<IPropertyInject>().ImplementedBy<PropertyInject>());
container.Register(Component.For<ConstuctorInject>());
var logger = container.Resolve<ILogger>();
logger.Log("我是依赖注入实例化");
var property = container.Resolve<IPropertyInject>();
property.PropertyLog.Log("属性依赖注入");
var consturctor = container.Resolve<ConstuctorInject>();
consturctor.Log();
}
}
{
interface ILogger
{
void Log(string message);
}
class Logger : ILogger
{
public void Log(string message)
{
Console.WriteLine(message);
}
}
interface IPropertyInject
{
ILogger PropertyLog { get; set; }
}
class PropertyInject : IPropertyInject
{
public ILogger PropertyLog { get; set; }
}
class ConstuctorInject
{
private ILogger ConstuctorLog;
public ConstuctorInject(ILogger log)
{
ConstuctorLog = log;
}
public void Log()
{
ConstuctorLog.Log("我是构造函数注入");
}
}
static void Main(string[] args)
{
var container = new WindsorContainer();
container.Register(Component.For<ILogger>().ImplementedBy<Logger>());
container.Register(Component.For<IPropertyInject>().ImplementedBy<PropertyInject>());
container.Register(Component.For<ConstuctorInject>());
var logger = container.Resolve<ILogger>();
logger.Log("我是依赖注入实例化");
var property = container.Resolve<IPropertyInject>();
property.PropertyLog.Log("属性依赖注入");
var consturctor = container.Resolve<ConstuctorInject>();
consturctor.Log();
}
}