gpt4 book ai didi

c# - 帮助重构为 Action 委托(delegate)

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:30 25 4
gpt4 key购买 nike

在一个测试方法中(对于 Fluent NHibernate 映射,尽管这并不是真正相关的)我将以下代码包装在一堆 usings 和 try/catch block 中:

new PersistenceSpecification<Entry>(session)
.CheckProperty(e => e.Id, "1")
.VerifyTheMappings();

我想重构它,以便我可以将它传递给辅助方法(我在其中放置 usingtry/catch block )。

我的要求是按照我希望的方式工作

  1. session需要由 using 语句之一提供
  2. Entry应该作为通用参数提供,这样我就可以测试各种对象的映射
  3. 应该可以替换.CheckProperty(e => e.Id, "1").VerifyTheMappings()PersistenceSpecification<T> 上调用的任何内容在定义参数时(在测试方法中)。

基本上,我想做这样的事情:

var testAction = new PersistenceSpecification<Entry>(session)
.CheckProperty(e => e.Id, "1")
.VerifyTheMappings();

HelpTestMethod(testAction)

但满足上述要求。

最佳答案

比如:

Action<PersistenceSpecification<Entry>> testAction = pspec => pspec
.CheckProperty(e => e.Id, "1")
.VerifyTheMappings();

HelpTestMethod<Entry>(testAction);

public void HelpTestMethod<T>(Action<PersistenceSpecification<T>> testAction)
{
using(var session = new SessionFactory().CreateSession(...))
{
testAction(new PersistenceSpecification<T>( session ));
}
}

关于c# - 帮助重构为 Action<T> 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031454/

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