gpt4 book ai didi

c# - 我实现 NHibernate 存储库模式时遇到的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:03 24 4
gpt4 key购买 nike

我正在同一解决方案文件中的单独项目(项目 B)中为我的项目(项目 A)设置单元测试。我的问题是我无法访问我所有存储库中的任何方法进行测试。我已经在项目 B 中为项目 A 的存储库设置了引用,并且我能够在项目 B 中实例化任何存储库。我只是无法访问它们的接口(interface)提供的任何方法。

这是我的一个实体的类、接口(interface)和存储库的示例。所有其他实体都遵循相同的架构模式。

类:

public class MyConfiguration
{
public virtual int Id { get; protected set; }
public virtual string DefaultLocation { get; set; }
public virtual string FolderLocalPath { get; set; }
public virtual string DefaultPrinter { get; set; }
public virtual int DefaultPrinterLabelAmount { get; set; }
public virtual string DefaultCompanyName { get; set; }
public virtual bool CompanyNameEnabled { get; set; }
public virtual bool TimestampLabelEnabled { get; set; }
public virtual bool CollectionFeeEnabled { get; set; }
}

接口(interface):

interface IMyConfigurationRepository
{
void CreateConfig(MyConfiguration config);
void UpdateConfig(MyConfiguration config);
MyConfiguration GetConfig();
}

存储库:

public class MyConfigurationRepository : IMyConfigurationRepository
{
void IMyConfigurationRepository.CreateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}

void IMyConfigurationRepository.UpdateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}

MyConfiguration IMyConfigurationRepository.GetConfig()
{
throw new NotImplementedException();
}
}

我想我的问题是,我的接口(interface)实现是否正确?

最佳答案

您正在使用“明确”的实现形式。

这意味着您确实不能在 Repsoitory 的实例上调用方法。您需要将其转换为界面:

var repo = new MyConfigurationRepository ();
var gate = (IMyConfigurationRepository) repo;

repo.CreateConfig(...); // won't compile
gate.CreateConfig(...); // OK

如果这是您想要的,这取决于您的架构的其余部分。另一种方法是隐式实现:

public class MyConfigurationRepository : IMyConfigurationRepository
{
//void IMyConfigurationRepository.CreateConfig(MyConfiguration config)
public void CreateConfig(MyConfiguration config)
{
throw new NotImplementedException();
}
...
}

关于c# - 我实现 NHibernate 存储库模式时遇到的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com