public ComplexFunctionBuilder(Type targetType, IGenericDeserializer deserializer, Action<FieldFunctionInfo, object[]> configureFieldInfo) { _targetType = targetType; _pResult = Expression.Parameter(_targetType); _deserializer = deserializer; _configureFieldInfo = configureFieldInfo; }
public virtual ComplexFunctionBuilder CreateComplexFunctionBuilder(Type targetType, IGenericDeserializer deserializer) { Action<FieldFunctionInfo, object[]> cffi; if (BuildToolkit.DataContractAvailable(targetType) == AttributeState.Found) cffi = DataContractFieldReader; // DataContract deserialize else if (BuildToolkit.XmlAvailable(targetType) == AttributeState.Found) cffi = XmlFieldReader; // Xml deserialize else cffi = NativeNameFieldReader; // Native name deserialize return new ComplexFunctionBuilder(targetType, deserializer, cffi); }
public object CreateFunction(Type targetType, IGenericDeserializer deserializer) { if (targetType == typeof(ICfgNode)) return BuildToolkit.CreateNativeFunction(); if(IsPrimitive(targetType)) return BuildToolkit.CreatePrimitiveFunction(targetType); if(targetType.IsArray || IsCollection(targetType)) throw new ArgumentOutOfRangeException(string.Format("type '{0}' is collection", targetType.FullName)); return CreateComplexFunctionBuilder(targetType, deserializer).Compile(); }
/// <summary> /// settings loaded from a file /// </summary> /// <param name="fileName">file name</param> /// <param name="converter"></param> /// <param name="deserializer">deserializer</param> public XmlFileSettings(string fileName, IStringConverter converter, IGenericDeserializer deserializer) : base(converter, deserializer) { try { fileName = System.IO.Path.GetFullPath(fileName); var content = File.ReadAllBytes(fileName); _root = XDocument.Load(new MemoryStream(content)).Root; Identity = this.GetIdentitySource(fileName); Path = System.IO.Path.GetDirectoryName(fileName); _fm = this.GetMonitoring(fileName, content); } catch(SystemException ex) { throw new ApplicationException(string.Format("Unable to load file `{0}'", fileName), ex); } }
public XmlSystemSettings(string sectionName, IStringConverter converter, IGenericDeserializer deserializer) : base(converter, deserializer) { _sectionName = sectionName; var confFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; confFile = System.IO.Path.GetFullPath(confFile); _directory = System.IO.Path.GetDirectoryName(confFile); try { var section = ConfigurationManager.GetSection(_sectionName) as PlainXmlSection; if(section == null || section.PlainXml == null) throw new FormatException("section not found"); _root = section.PlainXml.Root; } catch(SystemException ex) { throw new ApplicationException(string.Format("Unable to system section `{0}'", sectionName), ex); } }
public IniFileSettings(string fileName, IStringConverter converter, IGenericDeserializer deserializer) : base(converter, deserializer) { try { fileName = System.IO.Path.GetFullPath(fileName); var content = File.ReadAllBytes(fileName); var context = new ParseContext(); context.ParseSource(Encoding.UTF8.GetString(content)); _sections = new List<Section>(context.Sections); Identity = this.GetIdentitySource(fileName); Path = System.IO.Path.GetDirectoryName(fileName); _fm = this.GetMonitoring(fileName, content); } catch(SystemException ex) { throw new ApplicationException(string.Format("Unable to load file `{0}'", fileName), ex); } }
public JsonFileSettings(string fileName, IStringConverter converter, IGenericDeserializer deserializer) : base(converter, deserializer) { try { fileName = System.IO.Path.GetFullPath(fileName); var content = File.ReadAllBytes(fileName); var val = JValue.Parse(Encoding.UTF8.GetString(content)); if (val.Type != TokenType.Object) throw new FormatException("required json object in content"); _obj = (JObject)val; Identity = this.GetIdentitySource(fileName); Path = System.IO.Path.GetDirectoryName(fileName); _fm = this.GetMonitoring(fileName, content); } catch(SystemException ex) { throw new ApplicationException(string.Format("Unable to load file `{0}'", fileName), ex); } }
protected FileSearcher(IGenericDeserializer deserializer) { Deserializer = deserializer; }
public XmlFileSettingsLoader(IGenericDeserializer deserializer, IStringConverter converter) : base(deserializer) { _converter = converter; }
public override ComplexFunctionBuilder CreateComplexFunctionBuilder(Type targetType, IGenericDeserializer deserializer) { if (BuildToolkit.XmlAvailable(targetType) == AttributeState.NotImplemented) throw new NotImplementedException(); return new ComplexFunctionBuilder(targetType, deserializer, XmlFieldReader); }