我是温莎城堡的新手,正在尝试了解基本知识...
我有以下代码...
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
关于c# - 温莎城堡(IOC)基础知识,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7190253/