簡略化されたクラスは以下のとおりです。すべての名前空間は個別の .cproj にあります。z.exe をビルドするときに、「参照されていないアセンブリで B が定義されています」という問題があります。
ctor A(string s) を追加したのは、すべての z に y.dll を含めたくないためです (z がたくさんあります)。混乱なくこれを機能させるにはどうすればよいですか?
1つの方法は、 A(B b) または A(string s) に別の引数を追加して、異なる数の引数を持つようにすることですが、これは私には良くありません。
//namespace x
using y;
public class A
{
public A(string s)
public A(B b)
}
//namespace y
public class B
{
public static explicit operator B(string s)
}
//namesapce z
using x;
public class C
{
void M()
{
string s = "";
A(s);
}
}