私は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
(キーを介してアクセスすることができること)プロパティとしてではなく、方法としては?
まあ、それはだ可能性が、それは作るためにあなたを必要とするRegions
プロパティを、および変更タイプのRegions
文字列を返すことにより、インデックスを作成することが可能な構造にしますList<string>
。に似ていますが、データソースからデータをロードするためのそのタイプのDictionary<string, List<string>>
追加ロジックがあります。
私の意見では、これらすべてを実行するのではなく、メソッドの名前を次のように変更する方が簡単だと思います。
public static List<string> GetRegions(string country)
そうすれば、プロパティのように「感じる」ことが少なくなり、現在のジレンマから抜け出します。インデクサーのようにアクセスしたいという他の技術的な理由がある場合は、状況が変わる可能性があります。
国ごとに地域を個別にキャッシュできるようにしたい
承知しました。必要に応じて、メソッドにキャッシュを追加することもできます。または、作成するこの新しいクラスに追加します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加