2009-04-19 28 views
3

解決策は非常に明白ですが、私はこれを投稿したことがありませんでした。私はそれを思い出して、他の人に参考にしています。ContextRegistry.GetContext()の呼び出しでSpring.NETから例外が発生するのはなぜですか?

続く
<sectionGroup name="spring"> 
    <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 
    <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 
</sectionGroup> 

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 
} 
を:そして、私のアプリでは、私が持っている

<spring> 
    <context> 
    <resource uri="config://spring/objects"/> 
    </context> 
    <objects xmlns="http://www.springframework.net"> 
    <object name="mediaLibrary" type="AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF"/> 
    </objects> 
</spring> 

私は私のapp.configファイルに次のように持って

それはすべて非常にうまくコンパイルされますが、GetContext()の呼び出しで例外が発生しています:

Error creating context 'spring.root': Could not load type from string value 
'AlbumLibraryWPF.AlbumLibrary, AlbumLibraryWPF'. 

私はSpring.NETドキュメントをチェックしましたし、私が間違ってやっているものを見ることができない - それ以外の場合は、例外を発生させないだろうが、私は明らかに間違って何かを持っています!

AlbumLibraryWPFは名前空間であり、AlbumLibraryWPF.AlbumLibraryはインスタンス化するクラスの完全修飾名です。私はこれが私が間違っていると推測しているが、どのように見ることができない。

答えて

4

私はそんなに馬鹿だと感じます。

AlbumLibrary.dllを正しい出力ディレクトリにコピーできなかったためです。それは、Springがそれを見つけられなかったことを意味しました - たとえ私が強調したアセンブリ名の問題を修正した後でさえ、

+0

プロジェクトの出力が異なる場所を指していたので、私はまったく同じ問題を抱えていました。 DLLを同じディレクトリに出力するプロジェクトを変更すると、私のためにすべてが修正されました – lomaxx

0

あなたはnameするのではなく、股関節id属性を使用する必要があります。

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

はまた、それは config://spring/objectsの代わり config://spring/obectsでなければなりません。

AlbumLibraryWPFAlbumLibraryWPFアセンブリで定義されているタイプがAlbumLibraryであることを再度確認する必要があります。

+0

ハズレ! - 私はカットして、コードのペーストが、Firefoxは、私はプラグインを必要と主張してみました - idはまだ – ChrisF

+0

秒はタイプミスだった例外がスローされますコンテンツを見ることができるように - 私は再びそれを入力しました。 – ChrisF

1

カンマの後の名前はアセンブリ名である必要がありますが、必ずしも名前空間名と同じである必要はありません。

+0

ほとんどの場合、AlbumLibrary dllを正しい出力ディレクトリにコピーすることを忘れていたからです。 – ChrisF

-1

タイプを変更することができます。 type = "AlbumLibraryWPF.AlbumLibrary、AlbumLibraryWPF"、最初のパラメータはNameSpaceを意味し、2番目のパラメータ(ドットの後ろ)はSolution Nameを意味します。

  • 管理者権限を持つ "AlbumLibraryWPF.AlbumLibrary" =な名前空間名
  • "AlbumLibraryWPF" =ソリューション名
+0

解決方法の名前ではありませんが、アセンブリ名は、あなたの答えを修正してください。 – Marijn

+0

'type =" namespace.type、assembly "' – Marijn

+2

私は努力を感謝しながら - 私は2年半前に問題を解決しました。受け入れのダニで私の答えを参照してください;) – ChrisF

-1
  1. オープンVS2012やVS2010
  2. 設定:タイプ= "namespace.type、アセンブリ」

解決策をもう一度実行してください。

0

誤って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

関連する問題