我需要將SharpSvn.SvnListEventArgs
類型的Collection<T>
傳遞給svnClient.GetList
方法。 T
類型需要在運行時解決,因爲這用於MSBuild內聯任務。該GetList
方法調用拋出運行時錯誤作爲使用反射創建集合<T>
的最佳重載的方法匹配「
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;
在此先感謝!
下次嘗試擺脫不必要的評論。這極大地提高了可讀性。 – Oybek