C#にて子クラスの列挙子を親側で使いたいのですがどうしたらよいでしょうか?
.NET Frameworkは4.6.1です。
使用する方法
もしくはその他解決策などありましたら、教えていただきたいです
メソッド名クラス名などは仮ですが、コードは以下のような形になっています。
c#
1// AbstractFactory.cs 2 3public abstract class AbstractFactory{ 4 byte property1; 5 byte property2; 6 public AbstractFactory(){ 7 property1 = 0x00; 8 property2 = 0x01; 9 } 10 public virtual void CreateFromA(A createBy){ 11 var enumName = Enum.GetName(typeof(A), createBy); 12 if (Enum.TryParse(enumName, true, out B created)) 13 property1 = created; 14 else 15 throw Exception(); 16 } 17 public virtual void CreateFromB(B createBy){ 18 var enumName = Enum.GetName(typeof(B), createdBy); 19 if (Enum.TryParse(enumName, true, out A created)) 20 property1 = created; 21 else 22 throw Exception(); 23} 24 25// Factory1.cs 26public class Factory1():AbstractFactory{ 27 public Factory1(){ 28 property2 = 0x08; 29 } 30 public enum A{ 31 ko = 0x11, 32 otsu = 0xa0, 33 hei = 0xc0, 34 tei = 0xff 35 } 36 public enum B{ 37 ko = 0x12, 38 otsu = 0x13, 39 hei = 0x14, 40 tei = 0x15 41 } 42} 43 44// Factory2.cs 45public class Factory2(): AbstractFactory{ 46 public Factory2(){ 47 property2 = 0x08; 48 } 49 public enum A{ 50 rin = 0x00, 51 pyo = 0x08, 52 to = 0x10, 53 sha = 0x18, 54 kai = 0x20, 55 jin = 0x28, 56 retsu = 0x30, 57 zai = 0x38, 58 zen = 0x40 59 } 60 public enum B{ 61 rin = 0x02, 62 pyo = 0x09, 63 to = 0x12, 64 sha = 0x13, 65 kai = 0x52, 66 jin = 0x62, 67 retsu = 0xa0, 68 zai = 0x3f, 69 zen = 0x99 70 } 71}
newしたときに列挙子を読み替えたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。