OpenSlx.AutoWire.MethodDescription.CreateMethod C# (CSharp) Method

CreateMethod() public method

Create a new method or return existing method if appropriate
public CreateMethod ( OrmEntity entity ) : OrmEntityMethod
entity OrmEntity
return OrmEntityMethod
        public OrmEntityMethod CreateMethod(OrmEntity entity)
        {
            if (MethodType == Sage.Platform.Orm.Entities.MethodType.Rule)
            {
                OrmEntityMethod method = new OrmEntityMethod
                {
                    ActionType = ActionType.None,
                    ReturnType = ReturnType,
                    MethodName = Name,
                    MethodType = MethodType
                };
                if (ParameterTypes != null && ParameterTypes.Length > 0)
                {
                    //MethodParameterCollection paramColl = new MethodParameterCollection(method);
                    foreach (ParamDescription p in ParameterTypes)
                    {
                        method.MethodParameters.Add(new OrmEntityMethodParam { ParamName = p.Name, ParamType = p.ParamType });
                    }
                }
                return method;
            }
            else if (MethodType == Sage.Platform.Orm.Entities.MethodType.CrudEvent)
            {
                switch (EventType)
                {
                    case AutoWire.EventType.BeforeUpdate:
                        return entity.OnBeforeUpdateMethod;
                    case AutoWire.EventType.AfterUpdate:
                        return entity.OnAfterUpdateMethod;
                    case AutoWire.EventType.BeforeInsert:
                        return entity.OnBeforeInsertMethod;
                    case AutoWire.EventType.AfterInsert:
                        return entity.OnAfterInsertMethod;
                    case AutoWire.EventType.BeforeDelete:
                        return entity.OnBeforeDeleteMethod;
                    default:
                        throw new Exception("Invalid event type " + EventType + " for AutoWire method " + DeclaringType + "." + Name);
                }
            }
            else
            {
                throw new Exception("Unsupported method type " + MethodType + " for AutoWire method " + DeclaringType + "." + Name);
            }
        }

Usage Example

Example #1
0
 /// <summary>
 /// Add a method to the definition for the entity.
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="method"></param>
 private static void AddMethodToEntity(OrmEntity entity, MethodDescription method)
 {
     OrmEntityMethod targetMethod = null;
     targetMethod = method.CreateMethod(entity);
     OrmMethodTarget targetStep = method.CreateTarget(AUTOWIRE_HEADER);
     TargetMethodCollection targetColl = null;
     switch (method.StepType)
     {
         case TargetStepType.PreExecute:
             targetColl = targetMethod.PreExecuteTargets;
             break;
         case TargetStepType.PostFlush:
             targetColl = targetMethod.PostFlushTargets;
             break;
         case TargetStepType.PostExecute:
             targetColl = targetMethod.PostExecuteTargets;
             break;
         case TargetStepType.Primary:
         default:
             targetColl = targetMethod.MethodTargets;
             break;
     }
     targetColl.Add(targetStep);
     entity.Methods.Add(targetMethod);
 }
All Usage Examples Of OpenSlx.AutoWire.MethodDescription::CreateMethod