今、以下のようなデータの保存場所を選べるプログラムを作成しているのですが、
クラスの中からそのクラスのインスタンスにつけられた属性を知ることは可能ですか?
C#
1 2//保存場所を指定するアトリビュート 3[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] 4public class SaveAttribute : Attribute 5{ 6 public SaveAttribute (SaveType saveType) 7 { 8 this.saveType= saveType; 9 } 10 public SaveType saveType; 11} 12 13//保存場所のタイプ 14public emun SaveType 15{ 16 Txt, //txtで保存 17 Reg, //レジストリに保存 18} 19 20//値の保存場所を指定することも可能なクラス 21public class Data 22{ 23 public int Value 24 { 25 set 26 { 27 //このクラスのインスタンスにつけられたSaveAttributeから保存場所を取得し値を設定したい 28 } 29 } 30} 31
C#
1} 2//この機能を利用する側のクラス 3public class Test 4{ 5 [Save(SaveType.Txt)] 6 Data data = new Data(); 7 8 //Data data = new Data(SaveType.Txt); 9 //上の設定方法は利用者に何度もインスタンス化され保存場所を変えられる恐れがあるので都合が悪い 10} 11
現在までに、StackFrameとReflectionを利用して
Data.Valueを取得しようとした利用者のクラスの名前と、利用者クラスにあるDataのインスタンスの名前を取得することで、
FieldInfoを得てAttributeを取得するという試みを行いましたが、利用者クラスにあるDataのインスタンスの名前を取得できず、悩んでいます。
回答1件
あなたの回答
tips
プレビュー