1 つのソリューションで 2 つのプロジェクト間で共通の名前空間を共有しようとしています。プロジェクトは「Blueprint」と「Repositories」です。ブループリントには、アプリケーション全体のインターフェースが含まれており、アプリケーション構造のリファレンスとして機能します。
ブループリント プロジェクトには、次の宣言を含むインターフェイスがあります。
namespace Application.Repositories{
public interface IRepository{
IEntity Get(Guid id);
}
}
リポジトリ プロジェクトには、次のクラスのクラスがあります。
namespace Application.Repositories{
public class STDRepository: IRepository
{
STD Get(Guid id){
return new SkankyExGirlfriendDataContext()
.FirstOrDefault<STD>(x=>x.DiseaseId == id);
}
}
}
ただし、これは機能しません。Repositories プロジェクトには Blueprint プロジェクトへの参照があります。VS エラーが表示されます:「型または名前空間名 'IRepository' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) - 通常、これは簡単に修正できますが、using ステートメントを追加しても意味がありません。それらは同じ名前空間を持っているので.とにかく試してみましたが、うまくいきませんでした.参照が追加され、そのインターフェイスを参照するコード行がなくても、両方のプロジェクトが正常にコンパイルされました.ここで迷っています.何も見つからなかったので、私がやっていることに根本的に何か問題があると思います...しかし、それが何であるかはわかりません.この問題を解決する方法について、説明またはガイダンスをいただければ幸いです.皆さんが助けてくれることを願っています。
注: この方法でインターフェイスを同じ名前空間に保持する理由は、アプリケーションの完全なアーキテクチャの参照を得るために、すべてのインターフェイスを保持する堅固なプロジェクトが必要だからです。すべてのインターフェースをアプリケーション名前空間ではなく Blueprint.Application 名前空間に配置するなどの回避策を検討しました。ただし、それでは、アプリケーションのほぼすべてのページに using ステートメントを記述する必要があり、指が疲れます。みんなありがとう...