// // Copyright (c) Microsoft Corporation. All rights reserved. // namespace Microsoft.Activities.Presentation.Xaml { using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; using System.Xaml.Schema; internal class DefaultValueAttributeInfo : AttributeInfo { public override XamlTypeInvoker Invoker { get { return new DefaultValueAttributeInvoker(); } } public override ICollection GetConstructorArguments(DefaultValueAttribute attribute, ref ConstructorInfo constructor) { return new List() { attribute.Value }; } public override ConstructorInfo GetConstructor() { Type defaultValueAttributeType = typeof(DefaultValueAttribute); ConstructorInfo constructor = defaultValueAttributeType.GetConstructor(new Type[] { typeof(object) }); SharedFx.Assert(constructor != null, "designerAttribute has a constructor that takes an argument of type System.Object."); return constructor; } private class DefaultValueAttributeInvoker : XamlTypeInvoker { public override object CreateInstance(object[] arguments) { if (arguments != null && arguments.Length == 1) { // This helps to disambiguate the different constructors when arguments[0] is null. return new DefaultValueAttribute(arguments[0]); } else { return base.CreateInstance(arguments); } } } } }