Mini 容器学习笔记9——属性注入
属性注入的条件:
1. 属性必须是实例字段
2. 属性上必须贴有标签InjectAttribute或InjectManyAttribute
3. 属性必须有Setter访问器
4. 属性不能是索引属性
属性注入最佳原则
1. 当需要注入的属性的访问权限是私有时,应该把属性所属的类标记为密封类,具体原因请大家猜一猜。
2. 当类标记为密封类时,该类应该实现一个或多个契约接口(当如果需要对该类进行Aop拦截时,可以进行接口代理)
样例代码学习:
[TestFixture] public class PropertyInjectionTest : TestBase { [Contract] interface ISampleContract { void Test(); } [Contract] interface IPropertyContract { } sealed class SampleComponent : ISampleContract { [Inject] IPropertyContract property { get; set; } public void Test() { Assert.IsNotNull(property); } } class PropertyComponent : IPropertyContract { } [Test] public void Test() { ServiceRegistry .Register<SampleComponent>() .Register<PropertyComponent>(); var component = ServiceLocator.Get<ISampleContract>(); component.Test(); } }
Mini 容器官方网站:
推荐资源: