Sự hiểu biết hiện tại của tôi về đăng ký Castle Windsor là người ta chỉ có thể xác nhận đăng ký bằng cách gọi Resolve trên một thành phần gốc. Nhưng kể từ khi mô hình thành phần của windsor biết phụ thuộc của mỗi thành phần, nó sẽ có thể kiểm tra rằng tất cả các phụ thuộc có thể được hài lòng mà không thực sự instantiating bất cứ điều gì. Lý do chính để làm điều này là có một bài kiểm tra đơn vị đăng ký mà không yêu cầu tôi phải khai báo các thành phần gọi các tài nguyên bên ngoài khi khởi động.Castle Windsor: có cách xác thực đăng ký mà không có cuộc gọi giải quyết không?
Ví dụ: Tôi có một lớp Gốc có sự phụ thuộc vào IChild:
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
Nếu tôi đăng ký Gốc là IRoot, nhưng không đăng ký IChild. Khi tôi gọi quyết tâm như thế này:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
tôi nhận được một lỗi:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
Có cái gì đó như:
container.TestResolve<IRoot>();
Điều đó sẽ bước đi trên đồ thị phụ thuộc và kiểm tra xem tất cả phụ thuộc có thể được hài lòng, nhưng không thực sự khởi tạo bất cứ điều gì?
phương pháp thử nghiệm tốt đẹp :) – bevacqua
mã này không còn biên dịch: Loại 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic' không thể được sử dụng như loại tham số 'TDiagnostic' trong các loại generic hoặc phương pháp 'Castle.Windsor .Diagnostics.IDiagnosticsHost.GetDiagnostic() '. Không có chuyển đổi tham chiếu ngầm định từ 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic' to 'Castle.Windsor.Diagnostics.IDiagnostic
Peri, mã biên dịch cho tôi, Castle 3.2 dưới .net 4 – samy