誰もが次のようなコードを見たことがあると思います。
public void Server2ClientEnumConvert( ServerEnum server)
{
switch(server)
{
case ServerEnum.One:
return ClientEnum.ABC
//And so on.
この悪さの代わりに、次のようなことができます。
public enum ServerEnum
{
[Enum2Enum(ClientEnum.ABC)]
One,
}
これで、リフレクションを使用して ServerEnum をリッピングし、enum 宣言自体から変換マッピングを取得できます。
ここで私が抱えている問題は、Enum2Enum 属性の宣言にあります。
これは機能しますが、オブジェクト o を Enum e に置き換えると機能しません。オブジェクトをコンストラクターに渡すことができるようにしたくありません。他の列挙型のみです。
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(object o){}
}
これはコンパイルに失敗します。
public class EnumToEnumAttribute : Attribute
{
public EnumToEnumAttribute(Enum e){}
}
コンパイルエラーの原因はありますか? 他に、マップに必要な情報を他にどのように渡すことができますか:
EnumtoEnumAttribute(Type dest, string enumString)
これは冗長すぎるように思えますが、それが唯一の方法である場合は、それを使用すると思います。