EntLib Unity父类的依赖注入问题
2015-09-09 10:02
531 查看
Unity的注入有3种方式:构造函数、[Dependency]属性、[InjectionMethod]方法。这3种方式涉及到的interface或class都会去Registrations里找,找不到会报could not be resolved的exception。
这里有个小坑:用[Dependency]标记的属性,只有在构造函数、包括父类的constructor执行完成后,才会被注入。需要在构造函数里完成的初始化动作,应该在构造函数里传参。不需要的,可以打[Dependency]标签,由Unity稍后注入。如下:
但这种写法会污染构造函数的接口,子类的构造函数里都要传这个参数。如下:
即使加上默认参数,也至少要修改参数列表。目前并没有更好的方案,权且记下。
这里有个小坑:用[Dependency]标记的属性,只有在构造函数、包括父类的constructor执行完成后,才会被注入。需要在构造函数里完成的初始化动作,应该在构造函数里传参。不需要的,可以打[Dependency]标签,由Unity稍后注入。如下:
public abstract class UnityViewModelBase : ViewModelBase { public UnityViewModelBase(IApplicationContext context){ // do some initialization ... } [Dependency] public string OtherProperty{get;set;} }
但这种写法会污染构造函数的接口,子类的构造函数里都要传这个参数。如下:
public class ChildViewModel : UnityViewModelBase { public ChildViewModel(IApplicationContext context = null) : base(context){} }
即使加上默认参数,也至少要修改参数列表。目前并没有更好的方案,权且记下。
相关文章推荐
- Unity3D之协程(Coroutines & Yield )
- [Unity]C#.数据类型总结
- Unity 中常见错误之一UnassignedReferenceException: The variable button of CityScript has not been assigned.
- 【Unity3D_常用模块】 事件管理器
- unity3d插件
- Unity 模型的制作规范
- Unity3D占用内存太大的解决方法
- Unity3D普通类和继承自MonoBehaviour类的区别
- Unity3D的Mono是什么
- unity3d AssetBundle包加密
- Unity bundle的制作和使用
- Unity3d中使用log4net
- Unity3d资源管理分析
- Unity3D 获得编辑器的Log信息
- Unity 3D--外部加载资源AssetBundles
- unity3D-----------socket客户端、服务器(简单)
- 虚幻4与Unity: 哪个游戏引擎是开发者的最爱?
- Unity中使用UGUI与ScrollView的练习
- Unity热更新专题(六)uLua简介
- Unity3d C# Socket 下载文件 (同步到)