シナリオ: ProjectA は ProjectB を参照し、ProjectB は ProjectC を参照します。
ProjectC で定義されたインターフェイスがあります
namespace Cmp.Product.Family.Configuration.Container
{
public interface IComponent
{
// a couple of methods
}
}
ProjectB (ProjectB は ProjectC に依存) では、次のようにします。
using Cmp.Product.Family.Configuration.Container;
namespace Cmp.Product.Family.UI
{
public interface IPublicComponent : IComponent
{
}
}
ここまでは順調ですね。ただし、問題は ProjectA がコンパイルできないことです。コンパイラは、
Cmp.Product.Family.Configuration.Container.IComponent が定義されていません。ProjectC への参照を追加します。
ProjectC への参照を追加する必要がある理由がわかりません。私はまだIPublicComponent
ProjectA で を使用していません。
小さい再現ではこの問題を再現できませんでした。C# コンパイラから詳細な出力を得る方法はありますか?
ヒント : ProjectA で問題が発生するクラスは、ネストされた名前空間 ( namespace Cmp.Product.Family.UI.Settings
) です。の定義で名前空間を変更すると、問題はなくなりますIPublicComponent
。
編集 :
IPublicComponent を含む名前を から変更すると:
Cmp.Product.Family.UI
に :
Cmp.Product.Family.SomethingElse
それは役立ちます。問題が ProjectA にあるクラスは、この名前空間のコンテナであることを知っています:
Cmp.Product.Family.UI.Settings