WCFでDatContract列挙型への変換ビジネス列挙
-
20-09-2019 - |
質問
私は列挙型を持っている。
namespace Business
{
public enum Color
{
Red,Green,Blue
}
}
namespace DataContract
{
[DataContract]
public enum Color
{
[EnumMember]
Red,
[EnumMember]
Green,
[EnumMember]
Blue
}
}
私は、同じ値でWCFのDataContractで同じ列挙型を持っています。 私はトランスレータを使用してのDataContract列挙にビジネス列挙型を変換する必要があります。
鍬私はこれを達成することができますか?
解決
あなたが一度に両方のタイプを知っている場合は、
あなたはのような何かを行うことができ、変換を行う必要があります:
Business.Color bc = Business.Color.Red;
DataContract.Color dcc = (DataContract.Color)Enum.Parse(typeof(DataContract.Color), bc.ToString())
他のヒント
以下では、フレームワークのコードのような、よりエレガントなスタイル。
public static class Enum<T> where T : struct
{
public static T Parse(string value)
{
return (T)Enum.Parse(typeof(T), value);
}
public static T Convert<U>(U value) where U : struct
{
if (!value.GetType().IsInstanceOfType(typeof(Enum)))
throw new ArgsValidationException("value");
var name = Enum.GetName(typeof (U), value);
return Parse(name);
}
}
//enum declaration
...
public void Main()
{
//Usage example
var p = Enum<DataContract.Priority>.Convert(myEntity.Priority);
}
出来上がり!
あなたは、以下のようなものを使用することができます:
public static class ColorTranslator
{
public static Business.Color TranslateColor(DataContract.Color from)
{
Business.Color to = new Business.Color();
to.Red = from.Red;
to.Green = from.Green;
to.Blue = from.Blue;
return to;
}
public static DataContract.Color TranslateColor(Business.Color from)
{
DataContract.Color to = new DataContract.Color();
to.Red = from.Red;
to.Green = from.Green;
to.Blue = from.Blue;
return to;
}
}
所属していません StackOverflow