2017-04-23 6 views
1

データベースから自分のconfigsを保存して取得したい。私は2つの方法setConfig(“configName”, value)getConfig(“configName”)を書かれているし、私は私のプロパティでそれらを使用する:getとsetにプロパティの名前の文字列を取得することはできますか?

public long MyConfig1 
      { 
       get 
       { 
        return getConfig("MyConfig1"); 
       } 
       set 
       {      
        setConfig("MyConfig1", value); 
       } 
      } 

しかし、私はすべてのプロパティの名前の文字列を記述する必要があります。 set内の現在のプロパティへの名前や参照を取得してC#で取得できますか?このような 何か:あなたはgetConfigsetConfigメソッドへのアクセス権を持っている場合は、以下のように

public long MyConfig1 
      { 
       get 
       { 
        return getConfig(getName(this)); 
       } 
       set 
       {      
        setConfig(getName(this), value); 
       } 
      } 

答えて

1

あなたはcaller-information attributesを使用する方法で書くことができます:は、引数を指定しない、あなたはこれを呼び出すときに、

// Put this anywhere 
public static string GetCallerName([CallerMemberName] name = null) 
    => name; 

重要なことを:コンパイラが代わりにそれをやらせる:

public long MyConfig1 
{ 
    get => GetConfig(Helpers.GetCallerName()); 
    set => SetConfig(Helpers.GetCallerName(), value); 
} 

もちろん、とSetConfigの方法で同じ属性を使用してあなたがそれらを呼び出すときの議論。

+0

ちょうど不思議なことに、なぜヘルパーメソッドが 'nameof'よりも好まれていますか?これは実際のロジック(これは 'CallerMemberName'を使って実装されています)を抽出するのですか? – Aphelion

+0

ありがとう!それは私の答えでした! – breceivemail

3

は、それらのメソッドを変更します。これは最もクリーンなソリューションです。

// using System.Runtime.CompilerServices; 

    public long MyConfig1 
    { 
     get 
     { 
      return getConfig(); 
     } 
    } 

    private long getConfig([CallerMemberName] string propertyName = null) 
    { 
    } 

しかし、あなたは、これらの方法を変更し、各セッターとゲッターでnameofを使用するアクセス権を持っていない場合。

public long MyConfig1 
    { 
     get { return getConfig(nameof(MyConfig1)); } 
    } 
関連する問題