File: VersionAttribute.cs
Web Access
Project: src\src\Mvc\test\WebSites\VersioningWebSite\VersioningWebSite.csproj (VersioningWebSite)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Mvc.ActionConstraints;
 
namespace VersioningWebSite;
 
public class VersionAttribute : Attribute, IActionConstraintFactory
{
    private int? _maxVersion;
    private int? _minVersion;
    private int? _order;
 
    public int MinVersion
    {
        get { return _minVersion ?? -1; }
        set { _minVersion = value; }
    }
 
    public int MaxVersion
    {
        get { return _maxVersion ?? -1; }
        set { _maxVersion = value; }
    }
 
    public int Order
    {
        get { return _order ?? -1; }
        set { _order = value; }
    }
 
    public bool IsReusable => true;
 
    IActionConstraint IActionConstraintFactory.CreateInstance(IServiceProvider services)
    {
        return new VersionRangeValidator(_minVersion, _maxVersion) { Order = _order ?? 0 };
    }
}