簡體   English   中英

如何使用CodeDOM創建泛型類,其通用參數是我創建的類型?

[英]How to create a generic class using CodeDOM whose generic parameter is a type that I created?

我有一個使用CodeDOM創建的類:

CodeTypeDeclaration some_class = new CodeTypeDeclaration("SomeClass");
// ... properties and methods creation elided

我想創建“ SomeClass”類型的列表。 但是,我似乎無法這樣做:

var list_type = new CodeTypeReference(typeof (List<>).Name, ??? some_class ???);
var member_field = new CodeMemberField(list_type, field_name)
                                      {
                                               Attributes = MemberAttributes.Private,
                                      }; 

CodeTypeReference不接受CodeTypeDeclaration ,這是我需要的。 我能做什么? 不想把類的字符串名字,因為這可能會導致錯誤。

恐怕你做不到。 似乎沒有要任何方式來創建一個CodeTypeReferenceCodeTypeDeclaration 認為這是因為CodeTypeDeclaration不知道它在哪個命名空間中,所以沒有安全的方法可以做到這一點。

另一方面,在創建泛型類型的CodeTypeReference時,您無需使用泛型的名稱:

var listType = new CodeTypeReference(typeof(List<>));
listType.TypeArguments.Add(typeof(int));

無論出於何種原因,選擇的答案都不適用於我,但這確實可行:

var listType = new CodeTypeReference("List", new[] { new CodeTypeReference(typeof(int)) });

請參閱此處的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM