49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Globalization;
|
|
|
|
namespace HandyControl.Interactivity
|
|
{
|
|
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = true)]
|
|
public sealed class DefaultTriggerAttribute : Attribute
|
|
{
|
|
private readonly object[] _parameters;
|
|
|
|
public DefaultTriggerAttribute(Type targetType, Type triggerType, object parameter) : this(targetType,
|
|
triggerType, new[] {parameter})
|
|
{
|
|
}
|
|
|
|
public DefaultTriggerAttribute(Type targetType, Type triggerType, params object[] parameters)
|
|
{
|
|
if (!typeof(TriggerBase).IsAssignableFrom(triggerType))
|
|
throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
|
|
ExceptionStringTable.DefaultTriggerAttributeInvalidTriggerTypeSpecifiedExceptionMessage,
|
|
new object[] {triggerType.Name}));
|
|
TargetType = targetType;
|
|
TriggerType = triggerType;
|
|
_parameters = parameters;
|
|
}
|
|
|
|
public IEnumerable Parameters =>
|
|
_parameters;
|
|
|
|
public Type TargetType { get; }
|
|
|
|
public Type TriggerType { get; }
|
|
|
|
public TriggerBase Instantiate()
|
|
{
|
|
object obj2 = null;
|
|
try
|
|
{
|
|
obj2 = Activator.CreateInstance(TriggerType, _parameters);
|
|
}
|
|
catch
|
|
{
|
|
// ignored
|
|
}
|
|
return (TriggerBase) obj2;
|
|
}
|
|
}
|
|
} |