目标:
根据接口自动生成C#代码
问题:
当接中定义的方法参数带"out,ref,params"等声明时代码如何生成?//处理"接口方法代码生成"的代码片段//Type IInterface = Type.ReflectionOnlyGetType("Temp.IInterfaceTest,Temp.InterfaceTest", true, true);
//CodeTypeMemberCollection pcodeMethods = new CodeTypeMemberCollection();
//foreach (MethodInfo methodInfo in IInterface.GetMethods())CodeMemberMethod pcodeMemberMethod = new CodeMemberMethod();
pcodeMethods.Add(pcodeMemberMethod);
pcodeMemberMethod.Attributes = MemberAttributes.Public;
pcodeMemberMethod.Name = methodInfo.Name;
pcodeMemberMethod.ReturnType = new CodeTypeReference(methodInfo.ReturnType.Name);
//处理泛型定义
if (methodInfo.IsGenericMethod)
{
    Type[] genericArguments = methodInfo.GetGenericArguments();
    for (int i = 0; i < genericArguments.Length; i++)
    {
         pcodeMemberMethod.TypeParameters.Add(genericArguments[i].Name);
    }
}
//处理方法参数
foreach (ParameterInfo paramsInfo in methodInfo.GetParameters())
{
    CodeParameterDeclarationExpression pcodeParams =
        new CodeParameterDeclarationExpression(
            new CodeTypeReference(paramsInfo.ParameterType.Name),
            paramsInfo.Name
        );
    if(paramsInfo.IsIn) pcodeParams.Direction = FieldDirection.In;
    if (paramsInfo.IsOut) pcodeParams.Direction = FieldDirection.Out;    pcodeMemberMethod.Parameters.Add(pcodeParams);
}
//添加语句
------------------------------------------------------------
执行以上代码
输入:
public interface IInterfaceTest<T>
    {
        [System.Web.Services.WebMethod]
        S test<K,S>(K k,T t);
        string text();
        string kk{set;}
        string xx(T[] t);
        string[] aa(T[] t,ref T a,out int w,params T[] x);
    }
输出:
public class InterfaceTest<T> : IInterfaceTest<T>, System.Web.Services.WebService
     {
               
        public InterfaceTest() {
        }
        
        public virtual S test<K, S>(K k, T t)
        
         {
        }
        
        public virtual String text() {
        }
        
        public virtual String xx(T[] t) {
        }
        
        public virtual String[] aa(T[] t, T& a, out Int32& w, T[] x) {
        }
    }
-------------------------------------
生成的代码与预期的不一样,主要是参数定义那部分请问哪位大侠能指点下,先谢了..........