Calculator
   public class Calculator : ICalculator
{
public Calculator()
{
Logger = LogManager.GetCurrentClassLogger();
} public ILogger Logger { get; set; } public CalculationResult Add(string n1, string n2)
{
Logger?.Info($"received request to Add {n1} to {n2}"); return Calculate(n1, n2, _add);
} public CalculationResult Subtract(string n1, string n2)
{
Logger?.Info($"received request to Subtract {n2} from {n1}"); return Calculate(n1, n2, _subtract);
} public CalculationResult Multiply(string n1, string n2)
{
Logger?.Info($"received request to Multiply {n1} by {n2}"); return Calculate(n1, n2, _multiply);
} public CalculationResult Divide(string n1, string n2)
{
Logger?.Info($"received request to Divide {n1} by {n2}"); return Calculate(n1, n2, _divide);
} private static CalculationResult Calculate(string n1, string n2, Func<double, double, double> calculate)
{
var value1 = n1.ToDouble();
if (!value1.HasValue)
{
return GetCouldNotConvertToDoubleResult(n1);
} var value2 = n2.ToDouble();
if (!value2.HasValue)
{
return GetCouldNotConvertToDoubleResult(n2);
} double result = calculate(value1.Value, value2.Value);
return new CalculationResult
{
Answer = result
};
} private static readonly Func<double, double, double> _add = (value1, value2) => value1 + value2;
private static readonly Func<double, double, double> _subtract = (value1, value2) => value1 - value2;
private static readonly Func<double, double, double> _multiply = (value1, value2) => value1 * value2;
private static readonly Func<double, double, double> _divide = (value1, value2) => value2 == ? double.NaN : value1 / value2; private static CalculationResult GetCouldNotConvertToDoubleResult(string input)
{
return new CalculationResult
{
Message = $"Could not convert '{input}' to a double"
};
}
}

https://github.com/NotMyself/CalculatorService.git

http://www.cnblogs.com/jys509/p/4614975.html

使用Topshelf创建Windows服务(转)的更多相关文章

  1. 使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  2. Topshelf创建Windows服务

    使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps ...

  3. 【第三方插件】使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  4. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  5. 使用Topshelf创建Windows服务[转载]

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  6. [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务

    除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...

  7. 使用 Topshelf 创建 Windows 服务

    Ø  前言 C# 创建 Windows 服务的方式有很多种,Topshelf 就是其中一种方式,而且使用起来比较简单.下面使用 Visual Studio Ultimate 2013 演示一下具体的使 ...

  8. 使用Topshelf创建Windows 服务

    本文转载: http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html http://www.cnblogs.com/jys509/p ...

  9. Quartz.NET+Topshelf 创建Windows服务

    由于项目开发中经常会有定时任务执行的需求,所以会第一时间就想到 windows 服务 的方式,但是做过开发的同学都知道windows服务不利于调试,安装也麻烦: 并且有开源的作业框架Quartz.NE ...

  10. Topshelf 创建windows服务注意事项

    其中项目应该是控制台应用程序 test.exe需要赋与管理员权限,右键属性可以定义. test.exe  install test.exe unstall

随机推荐

  1. gdb逆向调试

    http://blog.csdn.net/yiling2012/article/details/35988361

  2. 创建自己的Repo Server

    非常久曾经出于好奇细致了解了下Repo及server的原理,可是今天突然发现有些忘了.于是想记录下来. Repo机制 Repo是google官方为管理Android项目开发出来的一个软件. 我们先来看 ...

  3. C#各种结束进程的方法详细介绍

    Process类的CloseMainWindow, Kill, Close Process.CloseMainWindow是GUI程序的最友好结束方式,从名字上就可以看出来它是通过结束主窗体,相当于用 ...

  4. Visual Studio 2013在线文档地址备案

    Visual Studio 2013还没有离线的帮助文档,这里做个记录,以备后面使用. 地址:http://msdn.microsoft.com/zh-cn/library/dd831853.aspx

  5. Appium+python自动化9-SDK Manager

    前言 SDK Manager到有哪些东西是必须安装的呢? 一.SDK Manager 1.双击打开SDK Manager界面

  6. linux下批量添加新用户

    作为一个系统管理员,可能要经常的为机器添加用户,可能是在一台机器上添加很多用户,也有可能是在很多机器上要添加同一个用户. 基本上,批量添加用户有两种方式,一是用useradd + passwd命令配合 ...

  7. 有用的iOS网站地址

    王巍 (@onevcat) 是一名 iOS 和 Unity3D 开发者,现旅居日本,正在寻求创意之源.http://swifter.tips/http://onevcat.com/2013/02/xc ...

  8. Linux下QTCreator代码自动补全(是真的自动补全,不是手动触发)

    在使用Windows下的QTCreator的时候,像visual studio一样代码自动补全十分方便,而在Linux下,QTCreator似乎不能做到. 网上有些说是可以设置成手动补全,今天试了一下 ...

  9. Cognos TM1_10.1.1服务端配置

    场景:本文继Cognos TM1_10.1.1服务端安装 之后,简单的说一下本人对简单配置的拙见,确保服务端在安装过程一切正常,成功安装. 1:进入TM的Cognos Configuration 2: ...

  10. send返回值

    http://blog.csdn.net/anghlq/article/details/5990513 在Unix系统下,如果send . recv . write在等待协议传送数据时 , socke ...