小编mr *_*ose的帖子

避免多次铸造


我有一个接收基类型参数的方法,并根据实际参数类型执行一些预处理.
这是我的代码:


public void OnMessageReceived(QuickFix42.Message message)
{
    if (message is QuickFix42.ExecutionReport)
    {
        ProcessExecutionReport(message as QuickFix42.ExecutionReport);
    }
    else if (message is QuickFix42.AllocationACK)
    {
        ProcessAllocationAck(message as QuickFix42.AllocationACK);
    }
    else if (message is QuickFix42.OrderCancelReject)
    {
        ProcessOrderCancelReject(message as QuickFix42.OrderCancelReject);
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但我从Visual Studio得到以下警告:

Warning 760 CA1800 : Microsoft.Performance : 'message', a parameter, is cast to type 'ExecutionReport' multiple times in method 'MessageProcessor.OnMessageReceived(Message)'. Cache the result of the 'as' operator or direct cast in order to eliminate the redundant isint instruction.

避免这些多余演员的最佳方法是什么?

c# performance casting quickfix

5
推荐指数
3
解决办法
2799
查看次数

如何保持第三方API和我自己的数据库之间的一致性?

我正在使用 REST API,并有以下处理付款请求的场景:

\n\n
    \n
  1. 客户端将请求(付款信息)发送到我自己的 API。
  2. \n
  3. 我的 API 调用第三方 REST API,向其传递付款信息,并从中接收付款 ID。如果第三方API调用因任何原因失败,错误会立即返回给客户端。
  4. \n
  5. 我的 API 将第 2 步中生成的付款 ID 和一些额外信息存储到自己的数据库中。
  6. \n
\n\n

我希望第三方API和我自己的数据库之间的数据保持一致。但是,如果由于某种原因在步骤 3 中无法访问数据库,我最终会得到不一致的数据 \xe2\x80\x94 付款将存在于第三方 API 中,但不存在于我自己的 API 数据库中。

\n\n

处理这个一致性问题的最佳方法是什么?

\n

.net c# api rest transactions

5
推荐指数
1
解决办法
1468
查看次数

通过WCF发送实体框架实体:如何防止导航字段的序列化?

在通过WCF发送具有导航属性的Entity Framework生成的实体时遇到问题.我有一个Securities用于存储财务数据的数据库和其中的两个表:

Stock : Id, Symbol, CompanyName, ExchangeName
Option: Id, StockId, OptionType, Strike

我为这个数据库创建了一个Entity Framework模型.然后我创建了WCF服务,它将生成的StockOptionEF实体公开给客户端.

我生成的实体Stock具有导航属性EntityCollection<Option> Options.当尝试将Stock实体从WCF服务返回到客户端时,我得到SerializationException:WCF无法序列化Options导航属性,因为数据库连接已经关闭.

我可以Options.Load()在打开数据库连接时调用方法来填充Options属性,但如果我不想为Stock实体加载完整的对象图,我该怎么办?

wcf serialization entity-framework

3
推荐指数
1
解决办法
3724
查看次数

我应该如何验证传递到 WCF 服务的参数?

通常,您使用模式或代码契约检查公共方法中的传入参数if-then-throw
我的问题是,我应该如何验证 WCF 服务中传递的参数?例如,我有以下合同:

[OperationContract]
Stock GetStock(string symbol);
Run Code Online (Sandbox Code Playgroud)

我想确保symbol参数不是null空字符串。我应该if-then-throw在服务端使用相同的模式或代码契约前提条件吗?我应该FaultContract向该GetStock方法添加属性并向客户端返回错误吗?WCF 服务的最佳参数验证技术是什么?

validation wcf

1
推荐指数
1
解决办法
8372
查看次数