0

我需要将一个Collection<T>类型传递SharpSvn.SvnListEventArgs给该 svnClient.GetList方法。T需要在运行时解析类型,因为这在 MSBuild 内联任务中使用。方法调用将GetList运行时错误抛出为

' ' 的最佳重载方法匹配SharpSvn.SvnClient.GetList(SharpSvn.SvnTarget, out System.Collections.ObjectModel.Collection<SharpSvn.SvnListEventArgs>)有一些无效参数

下面是我尝试过的代码片段。我该如何解决这个问题?

        System.Type t = svntask.GetType("SharpSvn.SvnListEventArgs");
    //System.Collections.ObjectModel.Collection<System.EventArgs> branchfolderlist = new System.Collections.ObjectModel.Collection<System.EventArgs>();

    System.Type genericType = typeof(System.Collections.ObjectModel.Collection<>);
    System.Type constructedType = genericType.MakeGenericType(t);

    var branchfolderlist = System.Activator.CreateInstance(constructedType);


    //branchfolderlist = svntask.GetType("SharpSvn.SvnListEventArgs")branchfolderlist;
    //System.Collections.ObjectModel.Collection<System.Object> branchfolderlist;

    dynamic svnTarget = svntask.GetType("SharpSvn.SvnTarget").GetMethod("FromUri").Invoke(null, new object[] { new System.Uri(destinationBranch) });

    //svntask.GetType("SharpSvn.SvnClient").GetMethod("GetList").Invoke(null, System.Reflection.BindingFlags.InvokeMethod, null, new object[] { svnTarget, branchfolderlist }, null);

    svnClient.GetList(svnTarget, out branchfolderlist);

    return true;

提前致谢 !!!

4

1 回答 1

2

问题是声明的类型branchfolderlistobject。将其更改为dynamic应该可以解决问题。

于 2013-01-21T16:43:25.467 回答