ClassA次のように、別のクラスのコンストラクターを呼び出す 1 つのメソッドを含むクラス ( ) があるとします。
public class ClassA
{
public void CallClassBConstructor()
{
using(ClassB myB = new ClassB()) {...}
}
}
クラスClassBは次のようになります。
public class ClassB : IDisposable
{
public ClassB(){}
public ClassB(string myString){}
public ClassB(ClassC myC){}
public void Dispose() {...}
}
...そしてClassCさらに簡単です:
public class ClassC{}
これらのクラスを独自のアセンブリに配置し、ソリューション全体をコンパイルすると、エラーは発生しません。しかし、using ステートメントを次のように置き換えると:
using(ClassB myB = new ClassB("mystring")){...}
[mynamespace].ClassCinへの参照を追加するように求めるコンパイル エラーが表示されClassAます。私はまったく呼び出していないのでClassB(ClassC myC)、これは私には意味がありません.使用するかどうかに関係なく、他のコンストラクターのタイプを含める必要があるのはなぜですか? ClassCライセンス取得済みまたは入手困難なアセンブリに含まれていた場合はどうなりますか? これは、開発者が避けるべき悪い設計の例ですか、それともここに何かが欠けていますか?