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].ClassC
inへの参照を追加するように求めるコンパイル エラーが表示されClassA
ます。私はまったく呼び出していないのでClassB(ClassC myC)
、これは私には意味がありません.使用するかどうかに関係なく、他のコンストラクターのタイプを含める必要があるのはなぜですか? ClassC
ライセンス取得済みまたは入手困難なアセンブリに含まれていた場合はどうなりますか? これは、開発者が避けるべき悪い設計の例ですか、それともここに何かが欠けていますか?