예제 #1
0
        /// <summary>
        /// Конструктор для десереализации
        /// </summary>
        /// <param name="info"></param>
        /// <param name="text"></param>
        public Function(SerializationInfo info, StreamingContext text)
            : this()
        {
            // первый вариант десериализации, без учета функций, входящих в ExternalLangDef
            //var f = SQLWhereLanguageDef.LanguageDef.FunctionFromSimpleStruct(
            //    Tools.ToolBinarySerializer.ObjectFromString(info.GetString(FuncName)));

            Function f;

            // Попытка использовать ExternalLangDef, так как там
            // содержится больше функций, чем в SQLWhereLangDef
            var externalLangDef = Type.GetType(
                "ICSSoft.STORMNET.Windows.Forms.ExternalLangDef, ExternalLangDef, Version=1.0.0.0, " +
                "Culture=neutral, PublicKeyToken=50dc27591ed591e6",
                false);

            if (externalLangDef == null)
            {
                externalLangDef = Type.GetType(
                    "ICSSoft.STORMNET.Windows.Forms.ExternalLangDef, ICSSoft.STORMNET.UI, Version=1.0.0.1, " +
                    "Culture=neutral, PublicKeyToken=21ce651d390c1fa0",
                    false);
            }

            if (externalLangDef != null)
            {
                MethodInfo   functionFromSimpleStruct = externalLangDef.GetMethod("FunctionFromSimpleStruct");
                PropertyInfo languageDef = externalLangDef.GetProperty("LanguageDef");
                f = (Function)
                    functionFromSimpleStruct.Invoke(languageDef.GetValue(null, null),
                                                    new object[]
                {
                    Tools.ToolBinarySerializer.ObjectFromString(
                        info.GetString(FuncName))
                });
            }
            else
            {
                // Если загрузка ExternalLangDef не удалась
                f = SQLWhereLanguageDef.LanguageDef.FunctionFromSimpleStruct(
                    Tools.ToolBinarySerializer.ObjectFromString(info.GetString(FuncName)));
            }


            fieldParameters   = f.fieldParameters;
            _fieldFunctionDef = f._fieldFunctionDef;
        }
예제 #2
0
        /// <summary>
        /// Клонирование функции
        /// </summary>
        /// <returns></returns>
        public Function Clone()
        {
            FunctionDef fdcopy = FunctionDef;

            object[] newpars = new object[Parameters.Count];
            for (int i = 0; i < newpars.Length; i++)
            {
                if (Parameters[i] is Function)
                {
                    newpars[i] = (Parameters[i] as Function).Clone();
                }
                else
                {
                    newpars[i] = Parameters[i];
                }
            }

            return(new Function(FunctionDef, newpars));
        }
예제 #3
0
 /// <summary>
 /// конструктор
 /// </summary>
 /// <param name="masterObj"></param>
 public DetailArrayOfFunctionalParameterDef(FunctionDef masterObj)
     : base(typeof(FunctionParameterDef), masterObj)
 {
 }
예제 #4
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="functionDefinition">Определение функции</param>
 /// <param name="parameters">Параметры</param>
 public Function(FunctionDef functionDefinition, params object[] parameters)
 {
     _fieldFunctionDef = functionDefinition;
     fieldParameters.AddRange(parameters);
 }