gpt4 book ai didi

c# - C#中获取属性setter的方法名

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

我正在使用 FakeItEasy 检查是否调用了属性的公共(public) setter 方法。

该属性称为Description,目前我正在这样测试它:

A.CallTo(model)
.Where(x => x.Method.Name.Equals("set_Description"))
.WithAnyArguments()
.MustHaveHappened();

这在功能上有效,但是使用魔术字符串作为方法名称的缺点是,如果我重构属性的名称,测试将失败,我将不得不手动更改所有测试中的字符串。

理想情况下,我想知道一种方法,就像在这段伪代码中那样:

var setterName = model.GetType()
.SelectProperty(x => x.Description)
.GetSetterName();

A.CallTo(model)
.Where(x => x.Method.Name.Equals(setterName))
.WithAnyArguments()
.MustHaveHappened();

这样,如果我右键单击重构 Description 属性,则不需要更新测试。我该怎么做?

最佳答案

您的伪代码是在正确的轨道上。

var setterName = model.GetType()
.GetProperty(nameof(Description))
.GetSetMethod();

请注意,nameof 仅在 C# 6 中可用。

关于c# - C#中获取属性setter的方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35600329/

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