Catel帮助手册-Catel.Core:(3)配置说明

 

 

 

Catel可以让你更方便的配置所有的平台

下面的表格解释了每个平台使用何种技术来获取和存储配置值。

平台 技术
.NET ConfigurationManager.AppSettings
Sliverlight IsolatedStorageSettings.ApplicationSettings
WinRT ApplicationData.Current.LocalSettings
PCL 不支持

 

1 从配置中获取值

   使用如下代码从配置中获取值:

var configurationService = new ConfigurationService();
var mySetting = configurationService.GetValue<int>("mySetting", 42);

注意:

It‘s best to retrieve the service from the dependency resolver or let it be injected into the classes using it

2 设置值到配置项目中

  使用如下的代码存储值到配置中:

var configurationService = new ConfigurationService();
configurationService.SetValue("mySetting", 42);

注意:

It‘s best to retrieve the service from the dependency resolver or let it be injected into the classes using it

3 自定义值的存储方式

ConfigurationService是用于扩展的,尽管他默认的是.NET的本地存储系统,它很容易的去创建自定义服务,下面是一个创建自定义服务来存储或者读取数据库的例子。

 

public class DbConfigurationService : ConfigurationService
{
    protected override bool ValueExists(string key)
    {
        using (var context = new ConfigurationContext())
        {
            return (from config in context.Configurations
                    where config.Key == key
                    select config).Any();
        }
    }

    protected override string GetValueFromStore(string key)
    {
        using (var context = new ConfigurationContext())
        {
            return (from config in context.Configurations
                    where config.Key == key
                    select config.Value).First();
        }
    }

    protected override void SetValueToStore(string key, string value)
    {
        using (var context = new ConfigurationContext())
        {
            var configuration (from config in context.Configurations
                    where config.Key == key
                    select config).FirstOrDefault();

            if (configuration == null)
            {
                configuration = context.CreateObject<Configuration>();
                configuration.Key = key;
            }

            configuration.Value = value;
            context.SaveChanges();
        }
    }
}

注意:

  不要忘记在ServiceLocator中注册自定义的ConfigurationService.

时间: 2024-10-27 00:10:58

Catel帮助手册-Catel.Core:(3)配置说明的相关文章

Catel帮助手册-Catel.Core(6):日志管理

1,简介      从2.2版本开始,Catel使用了一个自定义的日志系统,这种方式,针对log4net的引用可以被移除,做这个修改主要是为了不强迫用户使用log4net,同时,log4net看起来很长时间不更新了,其他的日志系统如NLog看起来在增长,新的日志系统将允许许多基础的日志,这样,日志将将非常简单,并且如果他需要,真正的日志将被用户执行. 1.1 Log和ILog      所有的日志将通过ILog接口.这个接口被自动的注册到Catel中的所有对象上作为Log字段,ILog接口仅仅有

Catel帮助手册-Catel.Core:(5)依赖注入(ServiceLocator and TypeFactory)

1,简介 在Catel2.0之前,IOC容器内部使用的是Unity,然而,这就强制所有的用户在他的应用程序中使用Unity作为IOC容器,也需要这样划分库,从2.0以后,一个不同的技术被使用了,这个允许开发者可以使用他们自己悬着的IOC容器技术. 1.1在Ioc中不同的组件 在Catel中有许多不同的组件他们对于Ioc是非常重要的. ServiceLocator 该组件用于注册所有的类型,这个事真正的Ioc容器 TypeFactory 用于创建类型的组件,使用IServiceLocator来获取

Catel帮助手册-Catel.Core:(4)数据处理

1,概要      文档的这个部分都是关于Catel中数据处理方法的,一些部分是基于CodeProject上的文章的,但这个文档有更多的更新内容.     一件很重要的事情是许多开发者花费很多时间来处理对象的序列化,序列化是一个专业领域的知识,只有技术比较高深的人员才能很好地掌握对象的序列化处理(要考虑程序集的改变,类的改变(属性的增加和移除),大部分开发者认为序列化只是执行如下的操作代码创建一个BinaryFormattter对象: var serializer = new BinaryFor

Catel帮助手册-Catel.Core:(2)缓存处理

      缓存是用于提供应用程序执行效率的,应用程序大部分的花费都用于数据的获取,这些处理主要移动到网络上或者存储到硬盘中,但是某些数据不太会改变,并不需要每次都同步.     因此,为了提高应用程序的执行效率,找到一个很好的方法来处理这些不太改变的数据库,Catel使用了一个 CatchStorage<TKey,TValue>的类,注意,第一个泛型的参数表示的是关键字的类型,第二个泛型的参数是要存储的值的类型,就像Dictonary<Tkey,TValue>.但是CatcheS

Catel帮助手册-Catel.Core:(1)参数检查

  我们检查方法是否正确,一般是返回对错,或者是是否抛出一个异常,大部分人不检查异常的正确性,那么这种错误在很深的堆栈中,很难查看. Catel与一般的检查方法不同,一般是使用   public void CheckForException(object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } }   然而,Catel会记录所有的行为,因此开始的检查方式如下: public void Che

Catel帮助手册-Catel.Core:(5)异常处理

  在Catel中使用异常处理时,创建一个异常处理策略和执行代码是安全的,不需要人工检查所有的异常类型,Catel通过IExceptionService方法来处理这个技术.   1,设置IExceptionService      注册一个异常到服务中让Calte知道他如何被获取,是很重要的,服务会处理加入到IExceptionService中的异常.      下面是注册一些异常以及他们如何被获取的例子,当FileNotFoundException异常发送时,它会给用户显示消息,对于其他的异常

20个为前端开发者准备的文档和指南

20个为前端开发者准备的文档和指南 来源:codeceo 发布时间:2016-07-27 阅读次数:358 0 是时候重新学习了!和以前一样,我收集了很多不同的学习资源,包括学习指南,学习文档,和其他有用的网站来帮助你在前端开发的不同领域里快速地进入状态. 所以请尽情享受我们的文档和指南系列的第九部分,并且不要忘了在评论区让我知道任何我没有找到的. 1. JavaScript Standard Style(JavaScript标准样式) 链接:http://standardjs.com Java

Catel框架类库说明-Catel.Core

1,参数检查 我们检查方法是否正确,一般是返回对错,或者是是否抛出一个异常,大部分人不检查异常的正确性,那么这种错误在很深的堆栈中,很难查看. Catel与一般的检查方法不同,一般是使用   public void CheckForException(object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } }   然而,Catel会记录所有的行为,因此开始的检查方式如下: public voi

Catel-为什么选择Catel

                  1. 介绍 Welcome to part 0 of the article series about Catel. Quite a strange part, don't you think? Well, we hear from a lot of people that the real power ofCatel cannot be seen at first sight. When people start using Catel, they beco