摘要:
Unity默认提供了ContainerControlledLifetimeManager、TransientLifetimeManager、HierarchicalLifetimeManager、PerResolveLifetimeManager、PerThreadLifetimeManager和E 阅读全文
摘要:
Unity的Container允许树型的层次结构,比如一个Container下可以有多个子Container,这些Container下也允许有多个子Container。示例如下: 值得注意的是一般情况下父Container的销毁并不影响子Container的使用。 阅读全文
摘要:
Unity给出一种延迟创建对象的方案,可以先获取对象的创建器 -> 再注册类型 -> 其余代码 -> 创建类型实例,创建器的类型必须是Func<T>,而不是和Func相同返回值的delegate。看一个简单示例: 由于4.0默认新增了Lazy<T>(3.5可以添加并行库System.Threadin 阅读全文
摘要:
在一些情况下虽然我们抽象了接口或者基类型,但是配置不同的实现可能需要提供不同的初始化值,比如两个实现类型的构造函数参数相同,但一个类型的某个参数会产生变化。在Unity中可以通过ParameterOverride完成(Unity还提供了DependencyOverride、PropertyOverr 阅读全文
摘要:
Unity允许在构造一个类型实例时对constructor、property、method进行依赖注入。比如ILogger的实现类型MyLogger有一个属性LogWritter,类型是TextWriter。它依赖一个名为LogWriter的类型注册,ILogger和MyLogger的定义如下: 首 阅读全文
摘要:
Unity提供了四个配置节来完成类型示例的创建。使用示例类型如下: 1、lifetime,管理类型实例的生命周期。Unity默认提供了几种实现,比如常用的singleton(单例)、perthread(ThreadStatic)等。 开发人员可以通过继承于LifetimeManager自定义生命周期 阅读全文
摘要:
Unity提供Automatic Type Lookup,你可以在配置节中定义assembly和namespace,比如mscorlib和System: 你可以为类型定义别名,默认Unity为基元类型定义了对应的别名,等同于C#中的关键字。比如System.Int32对应int(下面的int别名可以 阅读全文
摘要:
1、当前AppDomain的配置文件(App.config或Web.config,通过AppDomain.CurrentDomain.SetupInformation.ConfigurationFile获得): LoadConfiguration默认会加载没有命名的container,可以通过传递特 阅读全文
摘要:
Development Storage始终启动不了,发现默认DSInit初始化失败。于是手动执行DSInit + 命令参数,但是出现如下错误:Failed to create database ‘DevelopmentStorageDb20090919′ : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the insta 阅读全文
摘要:
假设你的XAML上有一个控件它的属性和其它控件的某个属性相同名字,比如BorderBrush。现在我要将控件的属性BorderBrush名字改成其它名字,点击重构。你会发现所有XAML上名为BorderBrush的属性都比修改为新的名字,而不是只重构了被修改控件。 阅读全文