4

即使解决方案如此明显,我也不应该发布此内容,但我将其留作提醒和对他人有用的参考点。

我的 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是我要实例化的类的完全限定名。我猜这是我错了,但看不出怎么做。

4

6 回答 6

5

我觉得自己太傻了。

这是因为我未能将 AlbumLibrary.dll 复制到正确的输出目录。这意味着 Spring 找不到它——即使在我修复了 Kent 突出显示的程序集名称问题之后。

于 2009-04-19T18:10:03.757 回答
1

逗号后面的名称应该是程序集名称,不一定与命名空间名称相同。

于 2009-04-19T16:05:52.230 回答
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

于 2014-05-04T15:12:34.783 回答
0

您应该使用 thaid属性而不是name

<object id="mediaLibrary" type="AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF"/>

它也应该config://spring/objects代替config://spring/obects.

您需要仔细检查您是否在程序集中定义的命名空间中调用AlbumLibrary了一个类型。AlbumLibraryWPFAlbumLibraryWPF

于 2009-04-19T16:05:14.757 回答
-1

您可以尝试更改类型。type="AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF",第一个参数表示名称空间,第二个参数(点后面)表示解决方案名称。

  • "AlbumLibraryWPF.AlbumLibrary" = NameSapce 名称
  • "AlbumLibraryWPF" = 解决方案名称
于 2011-11-28T03:36:14.467 回答
-1
  1. 以管理员权限打开 VS2012 或 VS2010
  2. 配置:type="namespace.type,程序集"

然后尝试再次运行您的解决方案。

于 2012-09-29T09:24:55.163 回答