使用反射</t>创建集合<t>

时间:2013-01-21 16:35:47

标签: .net c#-4.0 reflection

我需要将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;

提前致谢!!!

0 个答案:

没有答案