using System;
namespace Unity.VisualScripting
{
public partial class EnsureThat
{
public void HasAttribute(Type param, Type attributeType)
{
if (!Ensure.IsActive)
{
return;
}
if (!param.HasAttribute(attributeType))
{
throw new ArgumentException(ExceptionMessages.Reflection_HasAttribute_Failed.Inject(param.ToString(), attributeType.ToString()), paramName);
}
}
public void HasAttribute<TAttribute>(Type param) where TAttribute : Attribute => HasAttribute(param, typeof(TAttribute));
private void HasConstructorAccepting(Type param, Type[] parameterTypes, bool nonPublic)
{
if (!Ensure.IsActive)
{
return;
}
if (param.GetConstructorAccepting(parameterTypes, nonPublic) == null)
{
var message = nonPublic ? ExceptionMessages.Reflection_HasConstructor_Failed : ExceptionMessages.Reflection_HasPublicConstructor_Failed;
throw new ArgumentException(message.Inject(param.ToString(), parameterTypes.ToCommaSeparatedString()), paramName);
}
}
public void HasConstructorAccepting(Type param, params Type[] parameterTypes) => HasConstructorAccepting(param, parameterTypes, true);
public void HasPublicConstructorAccepting(Type param, params Type[] parameterTypes) => HasConstructorAccepting(param, parameterTypes, false);
}
}