.NET 4.5 で Neo4J のデータ アクセス ライブラリをモックアップしようとしています。インターフェイスを使用して、各コマンドをデータベースに定義しています。
与えられた:
public interface IBaseRequest
{
HttpMethod HttpMethod { get; }
string QueryUriSegment { get; }
}
public interface ICreateNode : IBaseRequest
{
void CreateNode();
}
public interface IBaseNodeActions : ICreateNode,ICreateNodeWProperties //...And many others, all inherit from IBaseRequest
{
}
internal class TestImplClass : IBaseNodeActions {
public TestImplClass() {
}
void ICreateNode.CreateNode() {
throw new NotImplementedException();
}
//Only one copy of the HttpMethod and QueryUriSegment are able to be implemented
DataCommands.HttpHelper.HttpMethod IBaseRequest.HttpMethod {
get {
throw new NotImplementedException();
}
}
string IBaseRequest.QueryUriSegment {
get {
throw new NotImplementedException();
}
}
問題は、IBaseRequest から継承する各インターフェイスについてです。親が所有する各プロパティ (HttpMethod、QueryUriSegment) に対して実装されたプロパティが必要です。
これは可能ですか?明示的な実装を使用する必要があることはわかっていますが、それらを実装クラスにプッシュする方法はわかりません。
実装クラスで見たいものは次のとおりです。
public class TestImplClass : IBaseNodeActions{
public TestImplClass() {
}
void ICreateNode.CreateNode() {
throw new NotImplementedException();
}
HttpMethod ICreateNode.HttpMethod {
get {
throw new NotImplementedException();
}
}
string ICreateNode.QueryUriSegment {
get {
throw new NotImplementedException();
}
}
HttpMethod ICreateNodeWProperties.HttpMethod {
get {
throw new NotImplementedException();
}
}
string ICreateNodeWProperties.QueryUriSegment {
get {
throw new NotImplementedException();
}
}
}
IBaseRequest ではなく、ICreateNode と ICreateNodeWProperties に注意してください。私はそれを別の方法で行うことにオープンですが、モジュラーでテスト可能なアプローチのようです。
それが理にかなっていることを願っています!