Tôi đi theo tip Ruben và đăng tải một nhỏ blog post về cách đạt được điều này, nhưng đây là câu trả lời nhanh:
Tạo một thuộc tính tùy chỉnh:
public class InjectHereAttribute : Attribute
{
}
lớp mục tiêu bây giờ sẽ trông như thế này:
Bây giờ Ninject phải được cấu hình để sử dụng thuộc tính tùy chỉnh, điều này có thể được thực hiện bằng cách tạo ra một thực hiện IInjectionHeuristic công nhận thuộc tính tùy chỉnh:
public class CustomInjectionHeuristic : NinjectComponent, IInjectionHeuristic, INinjectComponent, IDisposable
{
public new bool ShouldInject(MemberInfo member)
{
return member.IsDefined(
typeof(InjectHereAttribute),
true);
}
}
Và cuối cùng thêm hành vi này đến Ninject Kernel sử dụng bộ sưu tập thành phần, nó sẽ chạy dọc theo các thành phần hiện có, cụ thể là việc triển khai mặc định của IInjectionHeuristic, có nghĩa là thuộc tính mặc định hoặc thuộc tính tùy chỉnh có thể được sử dụng.
// Add custom inject heuristic
kernel.Components.Add<IInjectionHeuristic, CustomInjectionHeuristic>();
Liên kết không còn tồn tại (do đó minh họa tại sao tốt hơn là sao chép/dán và cung cấp tín dụng cho tác giả gốc, thay vì * chỉ * liên kết với bản gốc). Bạn có tài nguyên thay thế để mô tả câu trả lời gốc cho vấn đề này không? – BTownTKD
@BTownTKD bạn nói đúng. Tôi đã thêm ví dụ vào câu trả lời và thay đổi liên kết bị hỏng. – t3mujin
Cảm ơn! Điều này có vẻ rất hữu ích. – BTownTKD