我有一个使用CodeDOM创建的类:
CodeTypeDeclaration some_class = new CodeTypeDeclaration("SomeClass");
// ... properties and methods creation elided
我想创建一个“SomeClass”类型的List。但是,我似乎无法这样做:
var list_type = new CodeTypeReference(typeof (List<>).Name, ??? some_class ???);
var member_field = new CodeMemberField(list_type, field_name)
{
Attributes = MemberAttributes.Private,
};
CodeTypeReference不接受CodeTypeDeclaration
,这是我需要的。我能做什么?我不想要将类名作为字符串传递,因为这可能会导致错误。
答案 0 :(得分:5)
我怕你不能。似乎没有办法从CodeTypeReference
创建CodeTypeDeclaration
。我认为那是因为CodeTypeDeclaration
不知道它所在的命名空间,所以没有安全的方法来做到这一点。
另一方面,在创建CodeTypeReference
到泛型类型时,您不需要使用泛型类型的名称:
var listType = new CodeTypeReference(typeof(List<>));
listType.TypeArguments.Add(typeof(int));
答案 1 :(得分:1)
无论出于何种原因,所选答案对我都不起作用,但这样做了:
var listType = new CodeTypeReference("List", new[] { new CodeTypeReference(typeof(int)) });