C#-温莎城堡(IOC)基础
作者:互联网
我是温莎城堡的新人,正在尝试掌握基本知识…
我有以下代码…
namespace WindowsBash.Models
{
public interface IShouter
{
string Display();
}
public class Shout : IShouter
{
private IMessage _message;
public Shout(IMessage message)
{
_message = message;
}
public string Display()
{
return _message.TheMessage();
}
}
public interface IMessage
{
string TheMessage();
}
public class MessageHello : IMessage
{
public string TheMessage()
{
return "Hello";
}
}
public class MessageBye : IMessage
{
public string TheMessage()
{
return "Bye";
}
}
}
然后,我可以使用以下方法尝试测试温莎在做什么.
private void TestIOC()
{
var container = new WindsorContainer();
container.Register(
AllTypes.FromAssemblyContaining<IShouter>()
.Where(x => x.Namespace.StartsWith("WindowsBash"))
.WithService.AllInterfaces());
var MyShouter = container.Resolve<IShouter>();
var result = MyShouter.Display();
}
现在,它总是返回“ Hello”.如果我希望它返回“再见”,那么我需要在不更改类顺序的情况下进行哪些更改?
解决方法:
我假设您要使用自动接线.如果没有,您可以为每个组件进行手动注册. (编辑:看起来您自己发现了一对一的注册:)).
请参阅针对此问题选择的答案以使用自动装配,但控制特定类型的默认实现:
Castle Windsor: Using convention registration along with specific implementations
标签:castle-windsor,c 来源: https://codeday.me/bug/20191208/2088232.html