AutoFixture无法为使用System.ComponentModel.DataAnnotations.RangeAttribute的decimal属性创建对象。
创始人
2024-11-12 14:00:17
0

AutoFixture无法为使用System.ComponentModel.DataAnnotations.RangeAttribute的decimal属性创建对象的问题可以通过自定义AttributeRelay来解决。下面是一个代码示例:

using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using AutoFixture;
using AutoFixture.Kernel;

public class RangeAttributeRelay : ISpecimenBuilder
{
    public object Create(object request, ISpecimenContext context)
    {
        var property = request as PropertyInfo;
        if (property == null)
        {
            return new NoSpecimen();
        }

        var rangeAttribute = property.GetCustomAttribute();
        if (rangeAttribute != null && property.PropertyType == typeof(decimal))
        {
            return context.Resolve(rangeAttribute.Minimum);
        }

        return new NoSpecimen();
    }
}

public class MyClass
{
    [Range(1.0, 10.0)]
    public decimal MyProperty { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var fixture = new Fixture();
        fixture.Customizations.Add(new RangeAttributeRelay());

        var myClass = fixture.Create();

        Console.WriteLine(myClass.MyProperty);
    }
}

上面的代码示例中,我们自定义了一个RangeAttributeRelay类,实现了ISpecimenBuilder接口。在Create方法中,我们通过反射获取属性上的RangeAttribute,并判断属性类型是否为decimal。如果满足条件,我们使用AutoFixture的Resolve方法来生成满足RangeAttribute要求的decimal对象。

在Main方法中,我们首先创建了一个Fixture对象,并添加了自定义的RangeAttributeRelay。然后使用fixture.Create方法来创建MyClass对象,此时AutoFixture就能够正确生成满足RangeAttribute要求的decimal属性对象。

运行上述代码,输出将会是一个满足范围要求的decimal属性值。

相关内容

热门资讯

重大通报!哥哥打大a辅助工具靠... 重大通报!哥哥打大a辅助工具靠谱嘛,赣牌圈控制牌型辅助器,详细app(了解有挂)重大通报!哥哥打大a...
盘点一款!雀友会潮汕辅助器,四... 盘点一款!雀友会潮汕辅助器,四川游戏家园通用辅助在,详细插件(有人有挂)1、盘点一款!雀友会潮汕辅助...
玩家必用!乐乐围棋入门辅助,小... 玩家必用!乐乐围棋入门辅助,小程序四川血战辅助,详细软件(有挂细节)小程序四川血战辅助是不是有人用挂...
推荐攻略!新超凡手游辅助,雀友... 推荐攻略!新超凡手游辅助,雀友会广东潮汕辅助有开挂,详细攻略(有挂解惑)1、金币登录送、破产送、升级...
专业讨论!长城互娱辅助,神兽互... 专业讨论!长城互娱辅助,神兽互娱辅助免费,详细工具(有挂透明挂)神兽互娱辅助免费是不是有人用挂微扑克...
推荐一款!四川皮皮辅助,广东雀... 推荐一款!四川皮皮辅助,广东雀神挂件脚本开挂,详细软件(有挂秘笈)1、广东雀神挂件脚本开挂有没有辅助...
必知教程!雀神麻雀科技公司,宝... 必知教程!雀神麻雀科技公司,宝宝游戏辅助,详细挂(有挂教学)1、在雀神麻雀科技公司插件功能辅助器技巧...
如何分辨真伪!圣游科技,四川游... 如何分辨真伪!圣游科技,四川游戏家园通用辅助在,详细插件(有挂规律)四川游戏家园通用辅助在脚本下载中...
一分钟教你!德扑之星插件,途游... 一分钟教你!德扑之星插件,途游辅助器,详细器(讲解有挂)1、德扑之星插件模拟器是什么优化,德扑之星插...
必备教程!wepoker俱乐部... 必备教程!wepoker俱乐部开挂,四川游戏家园辅助软件,详细软件(讲解有挂)1、该软件可以轻松地帮...