Parameter preconditions and typereader overriding

This commit is contained in:
FiniteReality
2016-11-19 15:12:04 +00:00
parent d8c0f0aa4c
commit b7a5ee6542
6 changed files with 105 additions and 11 deletions

View File

@@ -0,0 +1,22 @@
using System;
using System.Reflection;
namespace Discord.Commands
{
[AttributeUsage(AttributeTargets.Parameter)]
public class OverrideTypeReaderAttribute : Attribute
{
private readonly TypeInfo _typeReaderTypeInfo = typeof(TypeReader).GetTypeInfo();
public Type TypeReader { get; }
public OverrideTypeReaderAttribute(Type overridenType)
{
if (!_typeReaderTypeInfo.IsAssignableFrom(overridenType.GetTypeInfo()))
throw new ArgumentException($"{nameof(overridenType)} must inherit from {nameof(TypeReader)}");
TypeReader = overridenType;
}
}
}

View File

@@ -0,0 +1,11 @@
using System;
using System.Threading.Tasks;
namespace Discord.Commands
{
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)]
public abstract class ParameterPreconditionAttribute : Attribute
{
public abstract Task<PreconditionResult> CheckPermissions(CommandContext context, ParameterInfo parameter, object value);
}
}