gpt4 book ai didi

c# - SetupSet() 已过时。代替什么?

转载 作者:IT王子 更新时间:2023-10-29 03:46:33 24 4
gpt4 key购买 nike

假设我想使用 Moq 在 setter 上创建回调,以将设置的属性存储在我自己的字段中供以后使用。 (人为的例子 - 但它已经到了问题的重点。)我可以做这样的事情:

myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);

而且效果很好。但是,根据 Intellisense,SetupSet 已过时。但它没有说明应该使用什么作为替代方案。我知道最小起订量提供 SetupProperty,它将使用支持字段 Autowiring 属性。但这不是我要找的。我想将设置值捕获到我自己的变量中。我应该如何使用非过时的方法来做到这一点?

最佳答案

我使用的是 Moq 版本 3.0.204.1 和 SetupSet does 对我来说没有标记为过时。但是,有几个 SetupSet重载位于 MockLegacyExtensions .您可以避免使用这些并使用 SetupSetMock 上定义的类。

差异很细微,您需要使用 Action<T>作为SetupSet参数,而不是 Func<T, TProperty> .

下面的调用将调用未弃用的重载:

myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value);

诀窍是使用 It.IsAny<string> ,这将拦截具有任何值的 setter 调用。

关于c# - SetupSet() 已过时。代替什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950318/

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