在我们的C#MVC应用程序中,我们有很多接口,它们将实现它们的对象映射为1到1.即:基本上,对于创建的每个对象,已经执行了"提取界面"操作.
Moq使用这些接口为我们的单元测试生成模拟对象.但这是接口重复使用的唯一时间.
我们系统中没有具体对象实现多个接口.
谁能告诉我这是否会导致问题在路上?如果是这样,他们会是什么?
我在想,我们的应用程序有很多重复,例如在这两个接口(编辑:在我们的服务层)中,唯一不同的是方法名称和它们所采用的参数类型,但在语义上他们做与他们发送消息的存储库相同:
interface ICustomer
{
void AddCustomer(Customer toAdd);
void UpdateCustomer(Customer toUpdate);
Customer GetById(int customerId);
}
interface IEmployee
{
void AddEmployee(Employee toBeAdded);
void UpdateEmployee(Employee toUpdate);
Employee GetById(int employeeId);
}
Run Code Online (Sandbox Code Playgroud)
这就是我认为重用的抽象原则会出现的地方,即将代码转换为类似的东西:
public interface IEmployee: IAdd<Employee>, IUpdate<Employee>, IFinder<Employee>
Run Code Online (Sandbox Code Playgroud)
这与存储库模式无关 - 这是关于任何层中的接口,看起来它们共享语义相同的行为.是否值得为这些操作派生通用接口并使"子接口"继承它们?
至少它会保持方法的签名一致.但这会给我带来什么其他好处呢?(除了利斯科夫替代原则)
现在,方法的名称和返回类型都到处都是.
我读过Mark Seemann关于Reused抽象原理的博客,但我不明白,坦白说.也许我只是愚蠢:)我还阅读了Fowler对Header Interfaces的定义.
我有以下代码:
// First we define our gift class, which has 2 properties:
// a Title and a Price.
// We use knockout js validation to ensure that the values input are suitable/
function Gift(item)
{
var self = this;
self.Title = ko.observable(item.Title);
// attach some validation to the Title property courtesy of knockout js validation
self.Title.extend({
required: true,
minLength: 3,
pattern: {
message: 'At least ',
params: '^[a-zA-Z]+\s?[a-zA-Z]*'
}
});
self.Price = ko.observable(item.Price);
self.Price.extend({required:true,number:true,min:0.1,max:1000});
};
var viewModelForTemplated =
{
gifts: …Run Code Online (Sandbox Code Playgroud) 我们正在运行本地TFS 2017.我想为我们的QA团队创建一个发布定义,它将创建一个运行Windows 7的Docker容器,并自动部署我们的发布版本.
部署完成后,QA团队应该能够登录容器来测试应用程序.无需手动运行MSI安装程序或Setup.exe.
理想情况下,每个排队版本都将创建自己的容器,并使用自己的已发布版本副本.
这可能吗?还是推荐?我们所有的服务器和主机都是内部的,我们不会使用Azure.
提前感谢任何建议.
检测C#Winforms应用程序是否已空闲一段时间的最佳方法是什么?
如果用户决定使用ALT + TAB并使用Microsoft Word或其他任何工作30分钟,让我们的应用程序未使用,我希望我们的应用程序自行终止.
这是类似问题的可接受答案: 检查应用程序是否在一段时间内处于空闲状态并将其锁定
但是,答案与Windows闲置一段时间有关,而不是特定的应用程序.我希望我们的应用程序终止,如果它没有被用于说,30分钟.
我看着这个:
http://www.codeproject.com/Articles/13756/Detecting-Application-Idleness
但是我在评论中读到这对多线程应用程序不起作用,我们的应用程序就是其中之一.我们的应用程序有一个主窗体,它产生模态和无模式窗体,使用Async Await来填充网格等.
然后我查看了SetWindowsHookEx,不确定这是否有用.
当然有人有一个解决方案(希望与.NET 4.5兼容):)
TIA
c# ×2
.net ×1
abstraction ×1
docker ×1
javascript ×1
knockout.js ×1
oop ×1
tfs ×1
tfs2017 ×1
updating ×1
winforms ×1