为了使用任何版本的API,我在运行时选择DLL。在这个DLL(ExternalDLL)中,有一个类似这样的类:
public class NameClass
{
private string firstN;
private string lastN;
public NameClass(string firstN, string lastN)
{
this.firstN = firstN;
this.lastN = lastN;
}
}
public class MyClass
{
private List<NameClass> listN = new List<NameClass>();
public int CurrentIndex;
public void GetName(out NameClass nclass)
{
if (CurrentIndex > -1 && CurrentIndex < listN.Count) nclass = listN[CurrentIndex];
else nclass = null;
}
}
因此,当我尝试使用方法GetName()时会引发异常。
dynamic myClass = Activator.CreateInstance("ExternalDLL.MyClass");
dynamic nameClass = Activator.CreateInstance("ExternalDLL.NameClass");
myClass.GetName(out nameClass);
调用该方法时,我将获得以下信息:RuntimeBinderException:
发生Microsoft.CSharp.RuntimeBinder.RuntimeBinderException HResult = 0x80131500 消息=一个消息对应的消息,“ Tekla.Structures.Model.ModelObject.GetPhase(不包括Tekla.Structures.Model.Phase)”的提示是无效的