[英]Using the name of a generic type in a class attribute
我有一個泛型類,需要在類屬性中使用其類型參數之一的名稱。 我不知道如何在該上下文中訪問類名
我嘗試過使用typeof(TMsg).Name
但VS顯示錯誤說
屬性參數必須是屬性參數類型的常量表達式,typeof表達式或數組創建表達式
目前我的代碼如下所示:
[MessageBase(typeof(TMsg).Name)]
public abstract class DDSMessageAbstract<TMsg/*, TReader, TWriter, TMsgBase, TSupport*/> : MessageBaseForDDS
where TMsg : new()
...
我的問題是,有沒有辦法讓我使用TMsg
的實際名稱,還是我必須為每個繼承類定義這個屬性?
簡短的回答可能是你做不到。
首先,泛型是針對您的類而不是您的屬性。 所以你不能使用
MessageBase(typeof(TMsg)
attributes
值僅限於簡單類型; 例如,基本常量(包括字符串)和typeof
。
來自ECMA 334v4:
§24.1.3屬性參數類型
屬性類的位置和命名參數的類型僅限於屬性參數類型 ,它們是:
- 以下類型之一:
bool
,byte
,char
,double
,float
,int
,long
,short
,string
。- 類型
object
。- 類型
System.Type
。- 枚舉類型,前提是它具有公共可訪問性,並且嵌套類型(如果有)也具有公共可訪問性。
- 上述類型的一維陣列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.