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; } }