40 lines
1.1 KiB
C#
40 lines
1.1 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.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;
|
|
|
|
public IActionConstraint CreateInstance(IServiceProvider services)
|
|
{
|
|
return new VersionRangeValidator(_minVersion, _maxVersion) { Order = _order ?? 0 };
|
|
}
|
|
}
|
|
} |