IronPython ArgumentTypeException自定义类

时间:2014-10-10 13:32:32

标签: c# python ironpython

我刚开始使用IronPython并且使用我的.NET dll时遇到了一些困难

我有两个程序集assemblyAassemblyBassemblyA引用assemblyB。在每个集合中,我都有一个这种原型的类:

assemblyA

using assemblyB
namespace assemblyA
{
   public classA
   {
      private assemblyB.classB property;
      public assemblyB.classB Property {get;set;}
   }
}

assemblyB

namespace assemblyB
{
   public classB
   {
      private double variable;
      public double Variable{get;set;}
   }
}

在我的代码中,我首先加载两个程序集:

import clr
clr.AddReferenceToFileAndPath(r'C:\Users\Me\Documents\.....\assemblyA.dll')
clr.AddReferenceToFileAndPath(r'C:\Users\Me\Documents\.....\assemblyB.dll')
import assemblyA
import assemblyB

clA = assemblyA.classA() #ok
clB = assemblyB.classB() #ok
clA.Prop = clB #Error: expected classB, got classB
clA.Prop = assemblyB.classB() #of course same error

有关如何解决问题的任何建议?我想这是因为assemblyB被加载两次但我只有一个assemblyB.dll所以为什么它不被认为是相同的?

1 个答案:

答案 0 :(得分:1)

经过多次试验,我终于找到了解决方案。我只是添加了在系统路径中搜索dll的路径,让IronPython决定加载哪一个:

import sys, os, clr
sys.path.append(r'[MyPath for assemblyA]')
sys.path.append(r'[MyPath for assemblyB]')
clr.AddReferenceToFile('assemblyA.dll')
clr.AddReferenceToFile('assemblyB.dll')

此问题与https://ironpython.codeplex.com/workitem/25124有关,此处我提出了一种解决方法。