httpリクエストを実行するための基本ロジックを含む基本クラスがあります。しかし、ユーザーが設定した設定に依存しているため、URLのドメインが変更されるため、何らかのスイッチが必要です。基本クラス静的プロパティを派生クラスと正しく共有する方法
これに基づいて、必要な基本値を与える責任がある列挙型を保持する静的プロパティを作成しました。さらに、基本クラスはnugetパッケージを介して配布されるため、ユーザーには幾分かの密封があり、必要なフィールドを実装するだけでよく、親に定義されたロジックを使用できます。
基本的に私はこれまでこの解決策を考え出しました。
public abstract class Base{
protected static Environment Environment { get; set; }
public static Init(Environment NewEnvironment){
Environment = NewEnvironment;
}
public void UseEnvironment(){
//use the selected environment on the method
}
}
public A : Base{
public void UseAEnvironment(){
UseEnvironment(); //using the environment defined with A.init() call
}
}
public B : Base{
public void UseBEnvironment(){
UseEnvironment(); //using the environment defined with B.init() call
}
は、私はあなたがクラスの値に設定したときにこのように、Bが同じ値を使用して終了します、メモリ内の静的プロパティのコピーが1つだけであることを知っています。
私はプログラムを実行すると、クラスBがリリース値を持つことになりますしながら、だから、クラスAで定義されたすべてのメソッドは、デバッグ値で実行されます
A.Init(Environment.Debug);
B.Init(Environment.Release);
を行うことができるようにする必要があります。
私のソリューションは、私が必要としていることをしません、それを動作させる方法はありますか、この状況を回避して同様の結果を達成するために、
「静的」の場合はインスタンスに属しません。そして、あなたの「環境」は本当にインスタンスに属しているようです。それはなぜ静的なのですか? – Andrew
静的なプロパティを使用していないものは避けてください。多分あなたは[XY問題](http://xyproblem.info/)を解決しようとしていますか? –