2012-02-27 11 views
-1

をキャストすることはできませんDLLファイルをロードし、XML内のファイルに関する情報を書き込み、私のコードです:議会はここ

MyOptions ass = MyOptionsList[MyOptionsList.Count - 1]; 
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; 
StringWriter sw = new StringWriter(); 
XmlSerializer serializer = new XmlSerializer(ass.GetType(), 
    new Type[] { typeof(MyOptions) }); 
serializer.Serialize(sw, ass); 
//more code writing in an xml file 
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; 

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
{ 
    return Assembly.LoadFrom(correctPath + ".dll"); 
} 

問題はラインserializer.Serialize(sw, ass);で起こります。内部例外は、あるDLLから別のDLLにキャストすることはできないと言います。どちらのdllファイルも同じ名前です。 1つはcorrectPathにあり、2つ目は別のパスにあります。これを解決するには?

MyOptionsは、ロードしているDLLが拡張されているクラスライブラリプロジェクトです。

+2

達成しようとしているコードは何ですか? – GregC

+0

@GregC dllファイルを読み込んで、その情報をxmlに書き込みます。 –

+0

@GregC MyOptionsは、ロードしているDLLが拡張されているクラスライブラリプロジェクトです。 –

答えて

2

私はちょうど問題なしで以下を試しました、私はあなたの問題は他の場所になければならないと思う。

public class MyOptions 
{ 
    public int n; 
} 

static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
{ 
    return Assembly.LoadFrom(@"C:\windwos\test.dll"); 
} 

static void Main(string[] args) 
{ 
    MyOptions ass = new MyOptions(); 
    AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; 
    StringWriter sw = new StringWriter(); 
    XmlSerializer serializer = new XmlSerializer(ass.GetType(), new Type[] { typeof(MyOptions) }); 
    serializer.Serialize(sw, ass); 
    //more code writing in an xml file 
    AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; 
} 

イベントコードは呼び出されないことに注意してください。

関連する問題