使用动态参数时,Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

时间:2018-10-08 18:24:24

标签: c# dynamic

为了使用任何版本的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)”的提示是无效的

0 个答案:

没有答案