- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章建立自定义的数据驱动的本地化资源provider由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
原文很长,为了便于阅读和理解,特将该文章改写成通俗易懂而且内容精炼的中文. 预备知识:系统默认的处理资源和本地化的方法是使用resx文件存储资源. 要使用自定义的resource provider,需要2个步骤: a) 修改web.config 文件,以便系统使用自定义的资源提供者 b) 建立自定义资源提供者类,最少包括3个: 1.ResourceProviderFactory,工厂类,用来建立ResourceProvider对象. 2.ResourceProvider,实现IResourceProvider,IImplicitResourceProvider,IwwResourceProvider 接口. 3.ResourceReader 实现IResourceReader. 修改web.config 文件,以使用自定义的资源提供者。 。
复制代码代码如下
<configuration> <system.web> <globalization resourceProviderFactoryType="Westwind.Globalization.DbSimpleResourceProviderFactory,Westwind.Globalization" /> </system.web> </configuration> 。
建立自定义资源提供者类: 1.工厂类 。
复制代码代码如下
[DesignTimeResourceProviderFactoryAttribute(typeof(DbDesignTimeResourceProviderFactory))] public class DbSimpleResourceProviderFactory : ResourceProviderFactory { public override IResourceProvider CreateGlobalResourceProvider(string classname) { return new DbSimpleResourceProvider(null, classname); } public override IResourceProvider CreateLocalResourceProvider(string virtualPath) { string ResourceSetName = DbResourceConfiguration.Current.StripVirtualPath(virtualPath); return new DbSimpleResourceProvider(null,ResourceSetName.ToLower()); } } 。
2.提供者类 。
复制代码代码如下
public class DbSimpleResourceProvider : IResourceProvider, IImplicitResourceProvider { private string _ResourceSetName; private IDictionary _resourceCache; private DbSimpleResourceProvider() { } public DbSimpleResourceProvider(string virtualPath, string className) { _ResourceSetName = className; } private IDictionary GetResourceCache(string cultureName) { if (cultureName == null) cultureName = ""; if (this._resourceCache == null) this._resourceCache = new ListDictionary(); IDictionary Resources = this._resourceCache[cultureName] as IDictionary; if (Resources == null) { // *** DEPENDENCY HERE (#1): Using DbResourceDataManager to retrieve resources // *** Use datamanager to retrieve the resource keys from the database DbResourceDataManager Data = new DbResourceDataManager(); Resources = Data.GetResourceSet(cultureName as string, this._ResourceSetName); this._resourceCache[cultureName] = Resources; } return Resources; } public void ClearResourceCache() { this._resourceCache.Clear(); } object IResourceProvider.GetObject(string ResourceKey, CultureInfo Culture) { string CultureName = null; if (Culture != null) CultureName = Culture.Name; else CultureName = CultureInfo.CurrentUICulture.Name; return this.GetObjectInternal(ResourceKey, CultureName); } object GetObjectInternal(string ResourceKey, string CultureName) { IDictionary Resources = this.GetResourceCache(CultureName); object value = null; if (Resources == null) value = null; else value = Resources[ResourceKey]; // *** If we're at a specific culture (en-Us) and there's no value fall back // *** to the generic culture (en) if (value == null && CultureName.Length > 3) { // *** try again with the 2 letter locale return GetObjectInternal(ResourceKey,CultureName.Substring(0,2) ); } // *** If the value is still null get the invariant value if (value == null) { Resources = this.GetResourceCache(""); if (Resources == null) value = null; else value = Resources[ResourceKey]; } // *** If the value is still null and we're at the invariant culture // *** let's add a marker that the value is missing // *** this also allows the pre-compiler to work and never return null if (value == null && string.IsNullOrEmpty(CultureName)) { // *** No entry there value = ""; // *** DEPENDENCY HERE (#2): using DbResourceConfiguration and DbResourceDataManager to optionally // add missing resource keys // *** Add a key in the repository at least for the Invariant culture // *** Something's referencing but nothing's there if (DbResourceConfiguration.Current.AddMissingResources) new DbResourceDataManager().AddResource(ResourceKey, value.ToString(), "", this._ResourceSetName); } return value; } 。
3.Reader类 。
复制代码代码如下
public class DbSimpleResourceReader : IResourceReader { private IDictionary _resources; public DbSimpleResourceReader(IDictionary resources) { _resources = resources; } IDictionaryEnumerator IResourceReader.GetEnumerator() { return _resources.GetEnumerator(); } void IResourceReader.Close() { } IEnumerator IEnumerable.GetEnumerator() { return _resources.GetEnumerator(); } void IDisposable.Dispose() { } } 。
完毕。 本人没有测试过,待测试通过,献上最精炼的源代码.敬请稍候. 。
最后此篇关于建立自定义的数据驱动的本地化资源provider的文章就讲到这里了,如果你想了解更多关于建立自定义的数据驱动的本地化资源provider的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有人告诉我,如果我只有一个“东西”,比如家(不是多个家),我应该在 routes.rb 中使用资源 :home,而不是资源 :home。但是当我查看路由时,POST 函数似乎想要 home#creat
Activity 开始。这些代码框架顺利通过。 // Initialize array adapters. One for already paired devices and //
资源 search-hadoop.com search-hadoop.com索引所有邮件列表,非常适合历史搜索。当你遇到问题时首先在这里搜索,因为很可能有人已经遇到了你的问题。 邮件列表 在A
我是 WPF 的新手,正在努力使用位于单独程序集中的样式。这就是我正在做的:- 我有一个带有\Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了\Themes 内的子文
我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,区别在于这些文件实际上并不存在于文件系统中的特定位置,而只是 java 对象。 这些当前由使用 SettingProv
如果我在 XAML 中使用以下内容,我会收到错误消息: 错
我正在使用 laravel 资源来获取 api 的数据: return [ 'id' => $this->id, 'unread' =>
我有以下 pom.xml: 4.0.0 mycompany resource-fail 0.0.1-SNAPSHOT BazBat
许多GDI +类都实现IDisposable,但是我不确定何时应该调用Dispose。对于使用new或静态方法(例如Graphics.CreateGraphics)创建的实例来说,这很明显。但是,由属
我正在构建一组 RESTful 资源,其工作方式如下:(我将使用“people”作为示例): 获取/people/{key} - 返回一个人对象 (JSON) GET/people?first_nam
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一个使用 $resource 的简单 Controller : var Regions = $resource('mocks/regions.json'); $scope.regions =
在 Azure 门户中,如何查看不同资源之间的依赖关系。我特别想查看哪些资源正在使用我要删除的存储。 最佳答案 您可以使用应用程序洞察应用程序 map 来执行此操作: 您还可以打开存储帐户的日志记录:
我正在使用 ionic 生成资源(图标和启动画面)。我正在使用 ionic v2.1.0 和 cordova v6.4.0。 到目前为止我一直在使用(它在以前的版本中工作): cordova plat
是否可以使用 Assets 包含子文件夹中的文件? 示例:[base_url]/assets/css/pepper-grinder/jquery-ui-1.8.11.custom.min.css 最佳
我正在阅读一些尝试教授 Android 开发的书。在书中,作者概述了 res/下的一些目录。他提到 res/menu 包含基于 XML 的菜单规范。他还提到了保存“通用文件”的 res/raw。当我创
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在服务器上使用 express-resource。在我的 AngularJS Controller 中: var User = $resource('/services/users/:use
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
对于我正在创建的(网络)应用程序,我需要使用基本身份验证在我的 UIWebView 中加载页面。 现在设置我使用的授权 header : NSString *result = [NSString st
我是一名优秀的程序员,十分优秀!