Example #1
0
        public static CrmPluginRegistrationAttribute CreateFromData(this CustomAttributeData data)
        {
            CrmPluginRegistrationAttribute attribute = null;
            var arguments = data.ConstructorArguments.ToArray();

            // determine which constructor is being used by the first type
            if (data.ConstructorArguments.Count == 8 && data.ConstructorArguments[0].ArgumentType.Name == "String")
            {
                attribute = new CrmPluginRegistrationAttribute(
                    (string)arguments[0].Value,
                    (string)arguments[1].Value,
                    (StageEnum)Enum.ToObject(typeof(StageEnum), (int)arguments[2].Value),
                    (ExecutionModeEnum)Enum.ToObject(typeof(ExecutionModeEnum), (int)arguments[3].Value),
                    (string)arguments[4].Value,
                    (string)arguments[5].Value,
                    (int)arguments[6].Value,
                    (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)arguments[7].Value)
                    );
            }
            else if (data.ConstructorArguments.Count == 8 && data.ConstructorArguments[0].ArgumentType.Name == "MessageNameEnum")
            {
                attribute = new CrmPluginRegistrationAttribute(
                    (MessageNameEnum)Enum.ToObject(typeof(MessageNameEnum), (int)arguments[0].Value),
                    (string)arguments[1].Value,
                    (StageEnum)Enum.ToObject(typeof(StageEnum), (int)arguments[2].Value),
                    (ExecutionModeEnum)Enum.ToObject(typeof(ExecutionModeEnum), (int)arguments[3].Value),
                    (string)arguments[4].Value,
                    (string)arguments[5].Value,
                    (int)arguments[6].Value,
                    (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)arguments[7].Value)
                    );
            }
            else if (data.ConstructorArguments.Count == 5 && data.ConstructorArguments[0].ArgumentType.Name == "String")
            {
                attribute = new CrmPluginRegistrationAttribute(
                    (string)arguments[0].Value,
                    (string)arguments[1].Value,
                    (string)arguments[2].Value,
                    (string)arguments[3].Value,
                    (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)arguments[4].Value)
                    );
            }

            foreach (var namedArgument in data.NamedArguments)
            {
                switch (namedArgument.MemberName)
                {
                case "Id":
                    attribute.Id = (string)namedArgument.TypedValue.Value;
                    break;

                case "FriendlyName":
                    attribute.FriendlyName = (string)namedArgument.TypedValue.Value;
                    break;

                case "GroupName":
                    attribute.FriendlyName = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Name":
                    attribute.Image1Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Attributes":
                    attribute.Image1Attributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image2Name":
                    attribute.Image2Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image2Attributes":
                    attribute.Image2Attributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Type":
                    attribute.Image1Type = (ImageTypeEnum)namedArgument.TypedValue.Value;
                    break;

                case "Image2Type":
                    attribute.Image2Type = (ImageTypeEnum)namedArgument.TypedValue.Value;
                    break;

                case "Description":
                    attribute.Description = (string)namedArgument.TypedValue.Value;
                    break;

                case "DeleteAsyncOperation":
                    attribute.DeleteAsyncOperation = (bool)namedArgument.TypedValue.Value;
                    break;

                case "UnSecureConfiguration":
                    attribute.UnSecureConfiguration = (string)namedArgument.TypedValue.Value;
                    break;

                case "SecureConfiguration":
                    attribute.SecureConfiguration = (string)namedArgument.TypedValue.Value;
                    break;

                case "Offline":
                    attribute.Offline = (bool)namedArgument.TypedValue.Value;
                    break;

                case "Server":
                    attribute.Server = (bool)namedArgument.TypedValue.Value;
                    break;

                case "Action":
                    attribute.Action = (PluginStepOperationEnum)namedArgument.TypedValue.Value;
                    break;
                }
            }
            return(attribute);
        }
        public static CrmPluginRegistrationAttribute CreateFromData(this CustomAttributeData data)
        {
            var attribute = new CrmPluginRegistrationAttribute();
            var arguments = data.ConstructorArguments.ToArray();

            if (arguments.Length == 8)
            {
                attribute.Message             = (string)arguments[0].Value;
                attribute.EntityLogicalName   = (string)arguments[1].Value;
                attribute.Stage               = (StageEnum)Enum.ToObject(typeof(StageEnum), (int)arguments[2].Value);
                attribute.ExecutionMode       = (ExecutionModeEnum)Enum.ToObject(typeof(ExecutionModeEnum), (int)arguments[3].Value);
                attribute.FilteringAttributes = (string)arguments[4].Value;
                attribute.Name           = (string)arguments[5].Value;
                attribute.ExecutionOrder = (int)arguments[6].Value;
                attribute.IsolationMode  = (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)arguments[7].Value);
            }
            else if (arguments.Length == 5)
            {
                attribute.Name          = (string)arguments[0].Value;
                attribute.FriendlyName  = (string)arguments[1].Value;
                attribute.Description   = (string)arguments[2].Value;
                attribute.GroupName     = (string)arguments[3].Value;
                attribute.IsolationMode = (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)arguments[4].Value);
            }
            foreach (var namedArgument in data.NamedArguments)
            {
                switch (namedArgument.MemberName)
                {
                case "RunAs":
                    attribute.RunAs = (string)namedArgument.TypedValue.Value;
                    break;

                case "FriendlyName":
                    attribute.FriendlyName = (string)namedArgument.TypedValue.Value;
                    break;

                case "GroupName":
                    attribute.GroupName = (string)namedArgument.TypedValue.Value;
                    break;

                case "Description":
                    attribute.Description = (string)namedArgument.TypedValue.Value;
                    break;

                case "DeleteAsyncOperation":
                    attribute.DeleteAsyncOperation = (bool)namedArgument.TypedValue.Value;
                    break;

                case "Offline":
                    attribute.Offline = (bool)namedArgument.TypedValue.Value;
                    break;

                case "Server":
                    attribute.Server = (bool)namedArgument.TypedValue.Value;
                    break;

                case "Action":
                    attribute.Action = (PluginStepOperationEnum)Enum.ToObject(typeof(PluginStepOperationEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "IsolationMode":
                    attribute.IsolationMode = (IsolationModeEnum)Enum.ToObject(typeof(IsolationModeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "Message":
                    attribute.Message = (string)namedArgument.TypedValue.Value;
                    break;

                case "EntityLogicalName":
                    attribute.EntityLogicalName = (string)namedArgument.TypedValue.Value;
                    break;

                case "FilteringAttributes":
                    attribute.FilteringAttributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Name":
                    attribute.Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "ExecutionOrder":
                    attribute.ExecutionOrder = (int)namedArgument.TypedValue.Value;
                    break;

                case "Stage":
                    attribute.Stage = (StageEnum)Enum.ToObject(typeof(StageEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "ExecutionMode":
                    attribute.ExecutionMode = (ExecutionModeEnum)Enum.ToObject(typeof(ExecutionModeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "UnSecureConfiguration":
                    attribute.UnSecureConfiguration = (string)namedArgument.TypedValue.Value;
                    break;

                case "SecureConfiguration":
                    attribute.SecureConfiguration = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Name":
                    attribute.Image1Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Alias":
                    attribute.Image1Alias = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image1Type":
                    attribute.Image1Type = (ImageTypeEnum)Enum.ToObject(typeof(ImageTypeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "Image1Attributes":
                    attribute.Image1Attributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image2Name":
                    attribute.Image2Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image2Alias":
                    attribute.Image2Alias = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image2Type":
                    attribute.Image2Type = (ImageTypeEnum)Enum.ToObject(typeof(ImageTypeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "Image2Attributes":
                    attribute.Image2Attributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image3Name":
                    attribute.Image3Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image3Alias":
                    attribute.Image3Alias = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image3Type":
                    attribute.Image3Type = (ImageTypeEnum)Enum.ToObject(typeof(ImageTypeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "Image3Attributes":
                    attribute.Image3Attributes = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image4Name":
                    attribute.Image4Name = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image4Alias":
                    attribute.Image4Alias = (string)namedArgument.TypedValue.Value;
                    break;

                case "Image4Type":
                    attribute.Image4Type = (ImageTypeEnum)Enum.ToObject(typeof(ImageTypeEnum), (int)namedArgument.TypedValue.Value);
                    break;

                case "Image4Attributes":
                    attribute.Image4Attributes = (string)namedArgument.TypedValue.Value;
                    break;
                }
            }
            return(attribute);
        }