2012-01-09 11 views
0

構造マップを使用して、子ディレクトリからプラグインを読み込みました。動的に読み込まれるクラスの属性がありません

メインアプリケーションとプラグインの両方がFileHelpers dllを参照しています。 FileHelpersには、レコードを区切るためのクラスを定義するための属性があります。これらは私のプラグインで定義されています。例えば。

[Delimited('\t')] 
public class Test { 
    public string name; 
} 

FileHelpers utitlityは、プラグインが提供するクラス定義を使用してメインアプリケーションから実行されます。メインアプリケーションの下のディレクトリにプラグインdllを置くと、属性が見つからないという不具合がFileHelpersライブラリに発生しますが、メインライブラリ(同じフォルダ)の隣に配置するとうまくいきます。

は、私は自分のコードの中にさらにいくつかのデバッグ文を配置していると

var type = typeof(Test); 
var attributes = type.GetCustomAttributes(true); 

が使用されていない特定の(1 FileHelpersが使用している)場合

var attributes = type.GetCustomAttributes(typeof(DelimitedAttribute), true); 

は、それが見つかったことを発見しましたカスタム属性を問題なく使用できます。

これはSMのことでしたが、MEFを試してAssembly.Load()を使ってやってみたところ、同じことが起こりました。

+0

'type'は' Test'型か 'Test'の祖先ですか? –

+0

申し訳ありません....estはテストのタイプを表します – Schotime

+0

おそらく私は何かが不足しているかもしれませんが、 'Type.GetCustomAttributes(bool)'は[MSDNドキュメント](http://)による 'GetCustomAttributes'の有効なオーバーロードではないようです。 /msdn.microsoft.com/en-us/library/system.attribute.getcustomattributes.aspx)。これはStructureMap固有のものですか? –

答えて

0

hereという問題が発生していると思います。

ブログ投稿linked in the answerによると、プラグインDLLは厳密に名前を付けて完全に信頼する必要があります。そうでなければGetCustomAttributesDelimitedAttributeを除外します。 AllowPartiallyTrustedCallers attributeをプラグインアセンブリに追加しようとする可能性があります。

関連する問題