/// <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; }
/// <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)); }
/// <summary> /// конструктор /// </summary> /// <param name="masterObj"></param> public DetailArrayOfFunctionalParameterDef(FunctionDef masterObj) : base(typeof(FunctionParameterDef), masterObj) { }
/// <summary> /// Конструктор /// </summary> /// <param name="functionDefinition">Определение функции</param> /// <param name="parameters">Параметры</param> public Function(FunctionDef functionDefinition, params object[] parameters) { _fieldFunctionDef = functionDefinition; fieldParameters.AddRange(parameters); }