即使解决方案非常明显,我也不应该发布这个,我将其作为提醒和其他人的有用参考点。
我的app.config文件中有以下内容:
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
其次是:
<spring>
<context>
<resource uri="config://spring/objects"/>
</context>
<objects xmlns="http://www.springframework.net">
<object name="mediaLibrary" type="AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF"/>
</objects>
</spring>
然后在我的应用程序中我得到了:
using Spring.Context;
using Spring.Context.Support;
public partial class AlbumChecker : Window
{
private DataTable dataTable;
private Library library;
private Thread libraryThread;
public AlbumChecker()
{
InitializeComponent();
CreateToolTips();
IApplicationContext ctx = ContextRegistry.GetContext();
library = (Library)ctx.GetObject("mediaLibrary");
// Other initialisation
}
// Other code
}
这一切编译得非常好,但是,我在调用GetContext()时遇到异常:
Error creating context 'spring.root': Could not load type from string value
'AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF'.
我已经检查了Spring.NET文档并且无法看到我做错了什么 - 但我显然有错误,否则它不会引发异常!
AlbumLibraryWPF
是命名空间,AlbumLibraryWPF.AlbumLibrary
是我想要实例化的类的完全限定名。我猜这就是我错了,但看不出来。
答案 0 :(得分:5)
我觉得这么傻。
这是因为我无法将AlbumLibrary.dll复制到正确的输出目录。这意味着Spring无法找到它 - 即使在我修复了Kent突出显示的程序集名称问题之后。
答案 1 :(得分:1)
逗号后面的名称应该是程序集名称,它不一定与名称空间名称相同。
答案 2 :(得分:1)
我收到此错误是因为错误地在app.config文件中有拼写错误[!* 2]。一旦我把它拿出来,错误就消失了。像这样的事情
<context>
<!--<resource uri="~//Aspects.xml"/>-->
<!--<resource uri="~//Dao.xml"/>-->
<!--<resource uri="~//Spring.xml"/>-->
<resource uri="file://Spring.xml"/>
<resource uri="file://Dao.xml"/>
</context>
!* 2
答案 3 :(得分:0)
您应该使用id
属性而不是name
:
<object id="mediaLibrary" type="AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF"/>
此外,它应该是config://spring/objects
而不是config://spring/obects
。
您需要仔细检查AlbumLibrary
程序集中定义的AlbumLibraryWPF
命名空间中是否有AlbumLibraryWPF
类型。
答案 4 :(得分:-1)
您可以尝试更改类型。 type =“AlbumLibraryWPF.AlbumLibrary,AlbumLibraryWPF”,第一个参数表示NameSpace,第二个参数(点后面)表示解决方案名称。
答案 5 :(得分:-1)
然后再次尝试运行解决方案。