Unity 容器 Vb.net LoadConfiguration 异常
Unity Container Vb.net LoadConfiguration Exception
我目前正在使用 Vb.net 结合 Unity 容器模型。但我无法让它工作。
我的代码在工厂中总是失败。
unity.config:
<unity>
<containers>
<container>
<types>
<type type="TestApplication.Interfaces.IBuilder, TestApplication.Interfaces" mapTo="TestApplication.Classes.Builder, TestApplication.Classes">
<lifetime type="singleton" />
</type>
</types>
</container>
</containers>
</unity>
我正在使用我的 App.config 文件中引用的自定义配置源。
app.config 看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity configSource="unity.config" />
</configuration>
我的Factory.vb看起来像这样:
Imports Microsoft.Practices.Unity
Imports Microsoft.Practices.Unity.Configuration
Imports System.Configuration
Public NotInheritable Class Factory
Private Shared registeredTypes As New Dictionary(Of Type, Object)
Public Shared Function GetInstance(Of T)(Optional asSingleton As Boolean = False) As T
Using container As UnityContainer = Factory.GetConfiguredUnityContainer()
Dim instance = container.Resolve(Of T)()
If (asSingleton = True And Not Factory.registeredTypes.ContainsKey(GetType(T))) Then
Factory.Register(Of T)(instance)
End If
Return instance
End Using
End Function
Private Shared Function GetConfiguredUnityContainer() As UnityContainer
Dim container As New UnityContainer
container.LoadConfiguration()
For Each item In registeredTypes
container.RegisterInstance(item.Key, item.Value)
Next
Return container
End Function
Private Shared Sub Register(Of T)(instance As T)
registeredTypes(GetType(T)) = instance
End Sub
End Class
Factory 在以下行失败:
container.LoadConfiguration()
在 GetConfiguredUnityContainer
方法中。
A first chance exception of type System.Configuration.ConfigurationsErrorsException occured in System.Configuration.dll
我确实有对映射程序集的引用。 TestApplication.Classes
也到 TestApplication.Interfaces
接口命名为IBuilder.vb
,class命名为Builder.vb
项目中的引用:
Microsoft.Practices.Unity
Microsoft.Practices.Unity.配置
演示核心
PresentationFramework
System.Configuration
有机会请给我建议,我会很高兴。
问候。
所以,在我周末检查了一些东西之后,我得出的结论是 vb.net 不支持外部统一 configSource。
您可以使用 xml 解析器解析配置文件并读取每个值。但是我太懒了。
我编辑了我的:
app.Config 那样:
已将容器从 unity.config 插入到我的 app.config
代码:
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<container>
<register type="TestApplication.Interfaces.IBuilder, TestApplication.Interfaces" mapTo="TestApplication.Classes.Builder, TestApplication.Classes" />
</container>
</unity>
我在 App.config 中注册了 type/s,之后我可以用我的工厂读取容器,并且可以使用 unity 容器。
我目前正在使用 Vb.net 结合 Unity 容器模型。但我无法让它工作。 我的代码在工厂中总是失败。
unity.config:
<unity>
<containers>
<container>
<types>
<type type="TestApplication.Interfaces.IBuilder, TestApplication.Interfaces" mapTo="TestApplication.Classes.Builder, TestApplication.Classes">
<lifetime type="singleton" />
</type>
</types>
</container>
</containers>
</unity>
我正在使用我的 App.config 文件中引用的自定义配置源。
app.config 看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity configSource="unity.config" />
</configuration>
我的Factory.vb看起来像这样:
Imports Microsoft.Practices.Unity
Imports Microsoft.Practices.Unity.Configuration
Imports System.Configuration
Public NotInheritable Class Factory
Private Shared registeredTypes As New Dictionary(Of Type, Object)
Public Shared Function GetInstance(Of T)(Optional asSingleton As Boolean = False) As T
Using container As UnityContainer = Factory.GetConfiguredUnityContainer()
Dim instance = container.Resolve(Of T)()
If (asSingleton = True And Not Factory.registeredTypes.ContainsKey(GetType(T))) Then
Factory.Register(Of T)(instance)
End If
Return instance
End Using
End Function
Private Shared Function GetConfiguredUnityContainer() As UnityContainer
Dim container As New UnityContainer
container.LoadConfiguration()
For Each item In registeredTypes
container.RegisterInstance(item.Key, item.Value)
Next
Return container
End Function
Private Shared Sub Register(Of T)(instance As T)
registeredTypes(GetType(T)) = instance
End Sub
End Class
Factory 在以下行失败:
container.LoadConfiguration()
在 GetConfiguredUnityContainer
方法中。
A first chance exception of type System.Configuration.ConfigurationsErrorsException occured in System.Configuration.dll
我确实有对映射程序集的引用。 TestApplication.Classes
也到 TestApplication.Interfaces
接口命名为IBuilder.vb
,class命名为Builder.vb
项目中的引用:
有机会请给我建议,我会很高兴。
问候。
所以,在我周末检查了一些东西之后,我得出的结论是 vb.net 不支持外部统一 configSource。
您可以使用 xml 解析器解析配置文件并读取每个值。但是我太懒了。
我编辑了我的: app.Config 那样:
已将容器从 unity.config 插入到我的 app.config
代码:
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<container>
<register type="TestApplication.Interfaces.IBuilder, TestApplication.Interfaces" mapTo="TestApplication.Classes.Builder, TestApplication.Classes" />
</container>
</unity>
我在 App.config 中注册了 type/s,之后我可以用我的工厂读取容器,并且可以使用 unity 容器。