先看:LanguageProvider.cs   中几个主要方法
1、读取默认语言
附user.ini文件:
2、获取语言类型
附LanguageType.xml
3、读取语言资源
附:
 
看ILanguageSupport.cs文件:
内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace LogisticsPlatform.Language
{
    #region 基类窗体设置语言接口
    public interface ILanguageSupport
    {
        void SetLanguage();//设置语言
    }
    #endregion
}
SetLanguage()方法是在
基类窗体里面实现的。所有的窗体都继承基类窗体。
方法实现思路:a.获取所有窗体的名称,b.进而获取当前窗体下所有的控件的类型和名称。c.遍历每一个控件,如果是当前控件的类型,获取当前类型下的所有控件,再进行遍历,与xml中的控件一致时相应语言显示结果。
整理及思考:
1、如何获取窗体类型。Type type=窗体对象.GetType
2、获取窗体名称。Type类属性FullName。type.FullName
3、获取当前窗体下的所有控件的类型和名称。使用Type类的GetFields(BindingFlags)方法。
在此详细解释下该方法及参数BindingFlag(引自Msdn):
参数BindingFlag为枚举类,含义:指定控制绑定和由反射执行的成员和类型搜索方法的标志。
方法GetFields(BindingFlags):当在派生类中重写时,使用指定绑定约束,搜索为当前 Type 定义的字段。

以下 BindingFlags 筛选器标志可以用于定义要在搜索中包括哪些字段:

  • 必须指定这两 BindingFlags.Instance 或 BindingFlags.Static 为了获取返回。

  • 指定 BindingFlags.Public 要包括在搜索中的公共字段。

  • 指定 BindingFlags.NonPublic 若要在搜索中包括非公共字段 (即,私有、 内部和受保护字段)。仅受保护,以及返回基类上的内部字段 ;不会返回基类上的私有字段。

  • 指定 BindingFlags.FlattenHierarchy 包括 public 和 protected 静态成员在层次结构 ; private 中继承的类的静态成员不包括。

以下 BindingFlags 修饰符标志可以用于更改搜索的工作原理:

  • BindingFlags.DeclaredOnly 若要搜索仅上声明的字段 Type, ,不只是继承的字段。

 FieldInfo[] fields = type.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance);
4、关于接口的认识:接口可以实现多重继承,类可以实现接口定义的各种方法
5、抽象类:抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
特征:
  • 抽象类不能实例化。
  • 抽象类可以包含抽象方法和抽象访问器。
  • 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
  • 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
     
与普通类比较:
  1. 抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
  2. 允许(但不要求)抽象类包含抽象成员。
  3. 抽象类不能被密封。sealed 修饰符不能用。密封类无法继承,而抽象类确要求对类进行继承(抽象类是基类)
与接口比较:
相似点:
  1. 不能实例化;
  2. 包含未实现的方法声明;
  3. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

差别:

  1. 类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
  2. 抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
  3. 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
  4. 抽象类是对象的抽象,然而接口是一种行为规范。
 
 
 
 
 
 
 
 

多语言配置--LogisticsPlatform物流平台系统的更多相关文章

  1. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  2. Java开源生鲜电商平台-系统简介

    Java开源生鲜电商平台-系统简介 1.生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台,连接买家与卖家之间的一个平台 看以 ...

  3. tbox的项目:vm86(汇编语言虚拟机),tbox(类似dlib),gbox(c语言实现的多平台图形库)

    https://github.com/tboox/tbox GBOX是一个用c语言实现的多平台图形库,支持windows.linux.mac.ios.android以及其他嵌入式系统. 现在这个项目, ...

  4. Go语言在国产CPU平台上应用前景的探索与思考

    http://www.chinaaet.com/article/3000087559 0 引言 CPU是电子产品的核心,代表着信息产业的发展水平.CPU发展至今已经有四十多年的历史了,实际就是Inte ...

  5. SpringBoot+MongoDB实现物流订单系统

    码字不易,点赞收藏,养成习惯!原创作者公众号:bigsai.更多精彩期待与您分享!项目收录在github的MongoDB案例中,文章收录在回车课堂中如果没基础请看看前两篇(墙裂推荐)MongoDB从立 ...

  6. 如何使用Postman快速简单的调用快递物流平台快递鸟API接口

    前沿 快递鸟是一家聚合类的第三方快递物流平台,目前该平台提供的产品主要以API为主.由于API不能直观的看到产品效果,需要进行API对接联调成功后才能真实的看到产品的实际效果.但是如果一上来就写代码进 ...

  7. 利用R语言打造量化分析平台

    利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...

  8. go语言打造个人博客系统(一)

    go语言打造个人博客系统(一) 为什么选择go语言?   听说go语言是在几年前,但真正深入了解他却是在2017年,因为当时作为讲师 ,需要准备go语言的课程,结果稍一接触立刻就喜欢上这门语言了,作为 ...

  9. 点菜网---Java开源生鲜电商平台-系统架构图(源码可下载)

    点菜网---Java开源生鲜电商平台-系统架构图(源码可下载) 1.点菜网-生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台 ...

随机推荐

  1. Mac 终端命令大全

    目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...

  2. java多线程详解(7)-线程池的使用

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, 这样频繁创建线程就会大大降低系 ...

  3. 初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs)

    我正在阿里云上创建一个简单的个人博客网站,刚好正在尝试NodeJs,决定找一款基于NodeJs的CMS来完成这个工作,最后找到了KeyStoneJS. KeyStoneJS是基于Express和Mon ...

  4. QT toLocal8Bit奇怪的问题

    #include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> MainWi ...

  5. PC和HOST之间文件传送

    从PC到HOST 文件传送表(*.srl) C:\123.txt text ~'LIANG.TEST.LIB.123' 批处理文件(*.bat) SEND "PC文件全路径" 'H ...

  6. sql学习

    1.改变表的某一字段的长度: alter table tt   modify a char(2000); 2.不想打开表就查看某一字段的长度可用下面的方法: select length(a),leng ...

  7. --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )

    转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...

  8. [erlang]supervisor(监控树)的重启策略

    1. init函数 init() -> {ok, {SupFlags, [ChildSpec,...]}} | ignore. [ChildSpec,...] 是在init之后默认要启动的子进程 ...

  9. amr转MP3

    using System; using System.Threading; using System.IO; using System.Diagnostics; using System.Securi ...

  10. url中,中文乱码的问题

    1// 在jsp中 String add = java.net.URLEncoder.encode("添加", "utf-8"); add = java.net ...