aspnetcore/test/WebSites/VersioningWebSite/VersionAttribute.cs

38 lines
1.0 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNet.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 IActionConstraint CreateInstance(IServiceProvider services)
{
return new VersionRangeValidator(_minVersion, _maxVersion) { Order = _order ?? 0 };
}
}
}