渡された変数を持つメソッドではなく、キーを使用してアクセスされるプロパティを作成します

snumpy

私はlistClass、データベースから取得され、将来の使用のためにキャッシュされるいくつかのリストを提供するクラス(それを呼びましょう)を作成しています。これらの1つは、特定の国の地域のリストを返すことです。私は現在それをメソッドとして構築しています:

public static List<string> Regions(string country)
{
    List<string> regions;
    string cacheKey = "CachedRegions_" + country;
    // try to get regions from cache

    if (regions == null)
    {
        // load regions from database
        // cache regions
    }

    return regions;
}

現在、次のようにアクセスされています。

List<string> myRegions = listClass.Regions(myCountry);

ただし、アクセスしているものはメソッドよりもプロパティに非常に近いため(クラス内の他のすべてのリストはプロパティです)、次のようにアクセスできる方が適切だと思います。

List<string> myRegions = listClass.Regions[myCountry];

国ごとにリージョンを個別にキャッシュできるようにしたいことに注意してください(したがって、プロパティに触れるたびに、世界中のすべてのリージョンをキャッシュ/ロードするわけではありません)。作成する方法がありますRegions(キーを介してアクセスすることができること)プロパティとしてではなく、方法としては?

Dスタンリー

まあ、それはだ可能性が、それは作るためにあなたを必要とするRegionsプロパティを、および変更タイプRegions文字列を返すことにより、インデックスを作成することが可能な構造にしますList<string>に似ていますが、データソースからデータをロードするためのそのタイプのDictionary<string, List<string>>追加ロジックあります。

私の意見では、これらすべてを実行するのではなく、メソッドの名前を次のように変更する方が簡単だと思います。

public static List<string> GetRegions(string country) 

そうすれば、プロパティのように「感じる」ことが少なくなり、現在のジレンマから抜け出します。インデクサーのようにアクセスしたいという他の技術的な理由がある場合は、状況が変わる可能性があります。

国ごとに地域を個別にキャッシュできるようにしたい

承知しました。必要に応じて、メソッドにキャッシュを追加することもできます。または、作成するこの新しいクラスに追加します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

メソッドにパラメーターとして渡されたクラスタイプを使用してローカル変数を定義する方法

分類Dev

Azure Functionsを使用してプロアクティブな通知/ブロードキャストメッセージをさまざまなチャネルを使用しているユーザーに送信するにはどうすればよいですか?

分類Dev

分離されたスコープを持つディレクティブにコントローラーメソッドを渡します

分類Dev

パラメータとして渡されるプロパティの値を設定するメソッドを作成することは可能ですか?

分類Dev

Angular2タイプスクリプトが機能しないイベントによって呼び出されたメソッドを介してクラス変数値またはクラスプロパティ値を変更する

分類Dev

文字列を使用してプロパティまたはメソッドにアクセスするにはどうすればよいですか?

分類Dev

Ouput(GraphVizの場合)プライベート変数を持つクラスをバンドルされたプロパティとして使用して、グラフの頂点をそのプロパティでブーストします

分類Dev

セキュリティ:このメソッドは、HTTPリクエストがサードパーティからではなくアプリから送信されることを保証するために信頼できますか?

分類Dev

ネストされたifelseステートメントを使用して関数を変更し、1つではなく2つの列を作成します

分類Dev

同じプロパティを持つクラスがたくさんあるが、LoadやRefreshなどのメソッドが異なる場合の正しいアプローチは何ですか?

分類Dev

SecurityError:SeleniumPythonを使用してiframeのダウンロードリンクをクリックするとクロスオリジンオブジェクトエラーでプロパティ「ドキュメント」にアクセスするためのアクセス許可が拒否されました

分類Dev

コンパイルできないメソッドを持つネストされた型(アクセスされていない)がある場合、テンプレートをインスタンス化できますか?

分類Dev

テンプレート化されたクラスタイプを、プロパティではなくメンバーメソッドとして宣言するにはどうすればよいですか?

分類Dev

初期化フィールドの動作を変更して、プライベートではなく保護されたプロパティを作成します

分類Dev

プロパティまたはメソッド「foo」はインスタンスで定義されていませんが、レンダリング中に参照されます。このプロパティがリアクティブであることを確認してください

分類Dev

IE11でマシン名でサイトにアクセスすると、「オブジェクトはプロパティまたはメソッド 'querySelector'をサポートしていません」と表示されます

分類Dev

DbSet <T> .Update()メソッドを使用すると、主キープロパティも変更済みとしてマークされますか?

分類Dev

計算されたプロパティセッターは、Maximusスタックを超えて作成します

分類Dev

渡された文字列を使用してさまざまなクラスプロパティにアクセスする

分類Dev

パンダでifステートメントを使用してネストされた反復をベクトル化された関数または他のより高速なメソッドに変換する方法

分類Dev

オブジェクトのプロパティを変更し、反応性を維持しようとしています。プロパティまたはメソッド「vm」はインスタンスで定義されていませんが、レンダリング中に参照されます

分類Dev

プロパティを持つオブジェクトではなく、定義されたエイリアスを持つ単一の値として属性を返すモデルインクルードオプション

分類Dev

JSONスキーマ:配列に、指定された値を持つプロパティを持つオブジェクトが少なくとも1つ含まれていることを確認するにはどうすればよいですか?

分類Dev

Java では、パラメータ化された方法でゲッターとセッターを使用できます。つまり、コードを渡して、返すクラス変数を決定できます。

分類Dev

ネストされたプロパティを持つScanFilterを使用してAWSDynamoDBをスキャンします

分類Dev

Realm React NativeのネストされたオブジェクトスキーマのRelationshipメソッドから循環参照を持つプロパティオブジェクトにアクセスできますか?

分類Dev

タイプパラメーターを持つファクトリメソッドを使用して、パラメーター化されたコンストラクターで派生クラスを作成します

分類Dev

どのように複数のパラメータを持つメソッドは、リストを取る関数に渡されますでしょうか?

分類Dev

JavaScript:コンストラクターで定義されていないメソッドでプロパティを使用していますか?

Related 関連記事

  1. 1

    メソッドにパラメーターとして渡されたクラスタイプを使用してローカル変数を定義する方法

  2. 2

    Azure Functionsを使用してプロアクティブな通知/ブロードキャストメッセージをさまざまなチャネルを使用しているユーザーに送信するにはどうすればよいですか?

  3. 3

    分離されたスコープを持つディレクティブにコントローラーメソッドを渡します

  4. 4

    パラメータとして渡されるプロパティの値を設定するメソッドを作成することは可能ですか?

  5. 5

    Angular2タイプスクリプトが機能しないイベントによって呼び出されたメソッドを介してクラス変数値またはクラスプロパティ値を変更する

  6. 6

    文字列を使用してプロパティまたはメソッドにアクセスするにはどうすればよいですか?

  7. 7

    Ouput(GraphVizの場合)プライベート変数を持つクラスをバンドルされたプロパティとして使用して、グラフの頂点をそのプロパティでブーストします

  8. 8

    セキュリティ:このメソッドは、HTTPリクエストがサードパーティからではなくアプリから送信されることを保証するために信頼できますか?

  9. 9

    ネストされたifelseステートメントを使用して関数を変更し、1つではなく2つの列を作成します

  10. 10

    同じプロパティを持つクラスがたくさんあるが、LoadやRefreshなどのメソッドが異なる場合の正しいアプローチは何ですか?

  11. 11

    SecurityError:SeleniumPythonを使用してiframeのダウンロードリンクをクリックするとクロスオリジンオブジェクトエラーでプロパティ「ドキュメント」にアクセスするためのアクセス許可が拒否されました

  12. 12

    コンパイルできないメソッドを持つネストされた型(アクセスされていない)がある場合、テンプレートをインスタンス化できますか?

  13. 13

    テンプレート化されたクラスタイプを、プロパティではなくメンバーメソッドとして宣言するにはどうすればよいですか?

  14. 14

    初期化フィールドの動作を変更して、プライベートではなく保護されたプロパティを作成します

  15. 15

    プロパティまたはメソッド「foo」はインスタンスで定義されていませんが、レンダリング中に参照されます。このプロパティがリアクティブであることを確認してください

  16. 16

    IE11でマシン名でサイトにアクセスすると、「オブジェクトはプロパティまたはメソッド 'querySelector'をサポートしていません」と表示されます

  17. 17

    DbSet <T> .Update()メソッドを使用すると、主キープロパティも変更済みとしてマークされますか?

  18. 18

    計算されたプロパティセッターは、Maximusスタックを超えて作成します

  19. 19

    渡された文字列を使用してさまざまなクラスプロパティにアクセスする

  20. 20

    パンダでifステートメントを使用してネストされた反復をベクトル化された関数または他のより高速なメソッドに変換する方法

  21. 21

    オブジェクトのプロパティを変更し、反応性を維持しようとしています。プロパティまたはメソッド「vm」はインスタンスで定義されていませんが、レンダリング中に参照されます

  22. 22

    プロパティを持つオブジェクトではなく、定義されたエイリアスを持つ単一の値として属性を返すモデルインクルードオプション

  23. 23

    JSONスキーマ:配列に、指定された値を持つプロパティを持つオブジェクトが少なくとも1つ含まれていることを確認するにはどうすればよいですか?

  24. 24

    Java では、パラメータ化された方法でゲッターとセッターを使用できます。つまり、コードを渡して、返すクラス変数を決定できます。

  25. 25

    ネストされたプロパティを持つScanFilterを使用してAWSDynamoDBをスキャンします

  26. 26

    Realm React NativeのネストされたオブジェクトスキーマのRelationshipメソッドから循環参照を持つプロパティオブジェクトにアクセスできますか?

  27. 27

    タイプパラメーターを持つファクトリメソッドを使用して、パラメーター化されたコンストラクターで派生クラスを作成します

  28. 28

    どのように複数のパラメータを持つメソッドは、リストを取る関数に渡されますでしょうか?

  29. 29

    JavaScript:コンストラクターで定義されていないメソッドでプロパティを使用していますか?

ホットタグ

アーカイブ