オープンソース プロジェクトの使い方を学ぶには、単体テストを見るのが一番だといつも思っています。Castle には流暢なインターフェースがあり、すべてをコードで行うことができます。WindsorDotNet2Testsテスト ケースから:
[Test]
public void ParentResolverIntercetorShouldNotAffectGenericComponentInterceptor()
{
WindsorContainer container = new WindsorContainer();
container.AddComponent<MyInterceptor>();
container.Register(
Component.For<ISpecification>()
.ImplementedBy<MySpecification>()
.Interceptors(new InterceptorReference(typeof(MyInterceptor)))
.Anywhere
);
container.AddComponent("repos", typeof(IRepository<>), typeof(TransientRepository<>));
ISpecification specification = container.Resolve<ISpecification>();
bool isProxy = specification.Repository.GetType().FullName.Contains("Proxy");
Assert.IsFalse(isProxy);
}
さらに詳しくは、ComponentRegistrationTestCaseとAllTypesTestCaseをご覧ください。
それを行うための DSL もあります。これは、物事を本当に単純化し、多くの簡単な拡張性を提供するため、私の好みのオプションです。DSL は Binsor と呼ばれ、詳細についてはhttp://www.ayende.com/Blog/archive/7268.aspxを参照 してください。ただし、情報を得るのに最適な場所は単体テストです。これは binsor で可能なことのコード例です:
for type in AllTypesBased of IController("Company.Web.Controller"):
component type
これらの 2 つの行は、IController インターフェイスをコンテナーに継承するすべての型を登録します:D