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属性值。

相关内容

热门资讯

透视ai!哈糖大菠萝挂,德州局... 透视ai!哈糖大菠萝挂,德州局透视脚本,必备教程(今日头条);软件透明挂作为一款辅助挂手游,《软件透...
五分钟辅助挂!心悦填大坑辅助器... 五分钟辅助挂!心悦填大坑辅助器免费版,兴动互娱游戏辅助器好用,切实教程(有挂透视)1、系统规律教程、...
透视教程!哈糖大菠萝破解器,w... 透视教程!哈糖大菠萝破解器,wpk俱乐部是真的,曝光教程(有挂讲解)是一款可以让一直输的玩家,快速成...
第6分钟辅助挂!边锋老友荣成辅... 第6分钟辅助挂!边锋老友荣成辅助器,四川途游辅助软件,可靠教程(有挂教程)1、首先打开最新版本,在首...
透视好友房!hhpoker的辅... 透视好友房!hhpoker的辅助是真的,哈糖大菠萝软件下载,软件教程(有挂分享);一、AI软件牌型概...
6分钟辅助挂!途游修改器,悠闲... 6分钟辅助挂!途游修改器,悠闲卡五星辅助,总结教程(有挂功能)小薇(透视辅助)致您一封信;亲爱玩家:...
透视辅助!wepoker可以免... 透视辅助!wepoker可以免费玩,wepoker透视最简单三个步骤,系统教程(有挂秘诀);相信小伙...
6分钟辅助挂!鄱阳翻精可以开挂... 6分钟辅助挂!鄱阳翻精可以开挂,天天开心王国可以作弊,可靠教程(有挂教学)1、这是跨平台的黑科技,在...
第十分钟辅助挂!微信小程序微乐... 第十分钟辅助挂!微信小程序微乐辅助器,葫芦娃辅助脚本,透明教程(有挂实锤)1、上手简单,内置详细流程...
透视好牌!来玩app破解,菠萝... 透视好牌!来玩app破解,菠萝辅助器免费版的功能介绍,可靠技巧(竟然有挂);一、AI软件牌型概率发牌...