C# 在CodeDOM创建的泛型方法参数中使用泛型参数
我试图通过code dome创建一个泛型方法,其中泛型参数在方法参数中使用,例如:C# 在CodeDOM创建的泛型方法参数中使用泛型参数,c#,codedom,C#,Codedom,我试图通过code dome创建一个泛型方法,其中泛型参数在方法参数中使用,例如: String.Join<T>(String, IEnumerable<T>) 但是,这会错误地产生: string Join<T>(string separator, System.Collections.Generic.IEnumerable<> values) ; 但是,这会生成1'的副本,导致输出代码如下所示: foreach (var p
String.Join<T>(String, IEnumerable<T>)
但是,这会错误地产生:
string Join<T>(string separator, System.Collections.Generic.IEnumerable<> values)
;
但是,这会生成1'的副本,导致输出代码如下所示:
foreach (var parameter in method.GetParameters())
{
Type parameterType = parameter.ParameterType;
this.VerifyTypeIsKnown(parameterType, typeSet, parameter.Name, "Parameter");
globalNamespace.Imports.Add(new CodeNamespaceImport(parameterType.Namespace));
var memberParameter = new CodeParameterDeclarationExpression(parameterType, parameter.Name);
memberMethod.Parameters.Add(memberParameter);
}
string Join<T>(string separator, System.Collections.Generic.IEnumerable<T>`1 values)
;
字符串联接(字符串分隔符、System.Collections.Generic.IEnumerable`1值)
;
关于我可能做错了什么,或者如何在使用泛型参数时正确生成参数,您有什么想法吗?找到了解决方案,供下一个了解此问题的人使用:
foreach (var parameter in method.GetParameters())
{
Type parameterType = parameter.ParameterType;
this.VerifyTypeIsKnown(parameterType, typeSet, parameter.Name, "Parameter");
globalNamespace.Imports.Add(new CodeNamespaceImport(parameterType.Namespace));
var typeArguments = from param in parameterType.GetGenericArguments()
select new CodeTypeReference(param);
var memberParameterType = new CodeTypeReference(parameterType.Name, typeArguments.ToArray<CodeTypeReference>());
var memberParameter = new CodeParameterDeclarationExpression(memberParameterType, parameter.Name);
memberMethod.Parameters.Add(memberParameter);
}
foreach(方法.GetParameters()中的var参数)
{
类型parameterType=参数.parameterType;
这个.VerifyTypeIsKnown(parameterType,typeSet,parameter.Name,“parameter”);
globalNamespace.Imports.Add(新的CodeNamespaceImport(parameterType.Namespace));
var typeArguments=来自parameterType.GetGenericArguments()中的param
选择新的CodeTypeReference(参数);
var memberParameterType=新的CodeTypeReference(parameterType.Name,typeArguments.ToArray());
var memberParameter=新的CodeParameterDeclarationExpression(memberParameterType,parameter.Name);
memberMethod.Parameters.Add(memberParameter);
}
它只有一行代码
foreach (var parameter in method.GetParameters())
{
memberMethod.Parameters.Add(new CodeParameterDeclarationExpression(parameter.ParameterType.Name, parameter.Name));
}
foreach (var parameter in method.GetParameters())
{
memberMethod.Parameters.Add(new CodeParameterDeclarationExpression(parameter.ParameterType.Name, parameter.Name));
}