public ComplexFunctionBuilder(Type targetType, IGenericDeserializer deserializer, Action<FieldFunctionInfo, object[]> configureFieldInfo)
 {
     _targetType = targetType;
     _pResult = Expression.Parameter(_targetType);
     _deserializer = deserializer;
     _configureFieldInfo = configureFieldInfo;
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 8
0
 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);
 }