internal DynamicInvoke(MethodInfo methodInfo, AccessModifiers access, VisibilityModifiers visibility,
                        InvokeDelegate invokeDelegate) : base(methodInfo)
 {
     MethodInfo     = methodInfo;
     InvokeDelegate = invokeDelegate ?? throw new ArgumentNullException(nameof(invokeDelegate));
     Access         = access;
     Visibility     = visibility;
     Parameters     = methodInfo.GetParameters();
     ParameterTypes = Parameters.Select(p => p.ParameterType).ToArray();
     ReturnType     = methodInfo.ReturnType;
 }
Exemple #2
0
 internal DynamicCtor(Type declaringType, ConstructorInfo constructorInfo, AccessModifiers access,
                      VisibilityModifiers visibility,
                      CtorDelegate ctorDelegate) : base(constructorInfo)
 {
     CtorDelegate    = ctorDelegate ?? throw new ArgumentNullException(nameof(ctorDelegate));
     ConstructorInfo = constructorInfo;
     Access          = access;
     Visibility      = visibility;
     if (constructorInfo == null)
     {
         Parameters     = new ParameterInfo[0];
         ParameterTypes = Type.EmptyTypes;
     }
     else
     {
         Parameters     = constructorInfo.GetParameters();
         ParameterTypes = Parameters.Select(p => p.ParameterType).ToArray();
     }
 }
Exemple #3
0
        /// <summary>
        /// Adds the FieldVisibilityModifier to the VisibilityModifiers List. Replaces another modifier with the same ID. Sorts the new Entry: First alls additive, then all multiplicative modifiers. Calculates the new Visibility value for the Field.
        /// </summary>
        /// <param name="visibilityModifier">The modifier to add to the list.</param>
        private void AddVisibilityModifier(Modifier.FieldVisibilityModifier visibilityModifier)
        {
            bool   ModIsInserted = false;
            double visibility    = 1;

            for (int i = 0; i < VisibilityModifiers.Count; i++)
            {
                //Is there a modifier with the same ID? Replace it.
                if (visibilityModifier.ModifierID == VisibilityModifiers[i].ModifierID)
                {
                    VisibilityModifiers.RemoveAt(i);
                    VisibilityModifiers.Insert(i, visibilityModifier);
                    ModIsInserted = true;
                }
                //Insert the additive modifier at the end of all the additive modifiers, if there was no duplicate.
                if (!ModIsInserted && visibilityModifier.Additive && !VisibilityModifiers[i].Additive)
                {
                    VisibilityModifiers.Insert(i, visibilityModifier);
                    ModIsInserted = true;
                }
                //Insert the modifier, when the end of the list is reached and it wasn't inserted already.
                if (!ModIsInserted && i == VisibilityModifiers.Count - 1)
                {
                    VisibilityModifiers.Add(visibilityModifier);
                    ModIsInserted = true;
                }

                //If the modifier at position i is Additive, add it. If it is a multiplicator, multiply it.
                if (VisibilityModifiers[i].Additive)
                {
                    visibility += VisibilityModifiers[i].Value;
                }
                else
                {
                    visibility *= VisibilityModifiers[i].Value;
                }
            }

            Visibility = visibility;
        }
 internal DynamicSetter(AccessModifiers access, VisibilityModifiers visibility, SetterDelegate setterDelegate)
 {
     SetterDelegate = setterDelegate ?? throw new ArgumentNullException(nameof(setterDelegate));
     Access         = access;
     Visibility     = visibility;
 }