関数ライブラリがあり、いくつかのユーティリティ変数は、アプリのコンテキストデスクトップアプリ/ウェブサイトに応じて2つの異なる方法で保存されます
ウェブサイトではSessionsを使用し、デスクトップの静的変数では、パフォーマンスにあまり影響を与えずに、これらの変数のゲッター//セッターを統合して自動化したいと考えています。
例:
public static class Cons
{
public static bool webMode;
}
public static class ConsWEB
{
public static string Username
{
get{ return HttpContext.Current.Session["username"].ToString();}
set{ HttpContext.Current.Session["username"]=value;}
}
}
public static class ConsAPP
{
private static string _username;
public static string Username
{
get{ return _username;}
set{ _username=value;}
}
}
解決策1IFを使用して考えました(パフォーマンスに悪いようです。変数へのアクセスを何度も考慮します。場合によっては、変数は複雑な内容のカスタムクラスです)。
public static class Cons
{
public static bool webMode;
public static string Username
{
get{ return webMode? ConsWEB.Username : ConsAPP.Username; }
set
{
if(webMode) { ConsWEB.Username = value; }
else { ConsAPP.Username = value; }
}
}
}
デリゲートを使用するソリューション2では、静的クラスコンストラクターで、ケースに応じてデリゲートされたメソッドを各getおよびsetに関連付けます。webModeがConsWEBのget/setメソッドを指している場合、そうでない場合はConsAPPのget/setメソッドを指します。
ソリューション2は、パフォーマンスの面で最高のものですか?この場合の他の方法論はありますか?