2012-10-09 53 views
2

對於以下泛型類。將泛型類中的枚舉成員引用的語法

class Message<T> 
{ 
    public enum TYPE { Heart, Spade }; 
} 

在Java中,指的枚舉,我可以簡單地

// Works in Java 
Message.TYPE type = Message.TYPE.Heart; 

但在C#怎麼樣?在C#中,我需要提供虛擬

Message<double>.TYPE type = Message<double>.TYPE.Heart; 

有什麼方法可以讓我避免dummy類型?

回答

3

您可以使用下面的代碼。

abstract class Message 
{ 
    public enum TYPE { Heart, Spade }; 
} 

class Message<T> : Message 
{ 

} 

,然後你可以訪問TYPEMessage.TYPE type = Message.TYPE.Heart;

4

類中單獨,而不是定義枚舉。

編輯:

class Message 
{ 
    public enum TYPE { Heart, Spade }; 
} 

class Message<T>: Message 
{ 
} 

現在你可以做到這兩者的方法,使用:

Message.TYPE type1 = Message.TYPE.Heart; 
Message<double>.TYPE type2 = Message.TYPE.Heart; 

希望這現在會有所幫助。

+0

這是行不通的。 U不能再這樣寫:'Message.TYPE.Heart' –

+0

我有點迷惑。爲什麼這樣寫是必須的? –

+0

設計。由於TYPE確實意味着消息類型。因此,使MessageType成爲消息成員的一部分是有意義的。 –