多语言配置--LogisticsPlatform物流平台系统

时间:2022-08-28 15:05:30
多语言配置--LogisticsPlatform物流平台系统
先看:LanguageProvider.cs   中几个主要方法
多语言配置--LogisticsPlatform物流平台系统
1、读取默认语言
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
附user.ini文件:
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
2、获取语言类型
多语言配置--LogisticsPlatform物流平台系统
附LanguageType.xml
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
3、读取语言资源
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
附:
多语言配置--LogisticsPlatform物流平台系统
 
看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()方法是在
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
基类窗体里面实现的。所有的窗体都继承基类窗体。
方法实现思路:a.获取所有窗体的名称,b.进而获取当前窗体下所有的控件的类型和名称。c.遍历每一个控件,如果是当前控件的类型,获取当前类型下的所有控件,再进行遍历,与xml中的控件一致时相应语言显示结果。
多语言配置--LogisticsPlatform物流平台系统
多语言配置--LogisticsPlatform物流平台系统
整理及思考:
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. 利用R语言打造量化分析平台

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

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

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

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

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

  9. 语言模拟ATM自动取款机系统

    C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...

随机推荐

  1. 订制DOM选择器

    本来是打算参考zepto.js,然后将里面想要的部分抽出来做函数,随调随用. 但后面发现这种写法重复代码太多,代码不整洁,于是就打算模仿下zepto的写法,挑出些比较实用的方法,造一下*. 起名叫“ ...

  2. c++ 中文字符串处理方法

    转自:http://hi.baidu.com/hehehehello/item/dcc44a4a6afc690e6dc2f08b C++处理中文的问题困扰我很久了.之前一旦遇到中文基本就投诸java怀 ...

  3. 通过java发送http请求

    通常的http请求都是由用户点击某个连接或者按钮来发起的,但是在一些后台的Java程序中需要发送一些get或这post请求,因为不涉及前台页面,该怎么办呢? 下面为大家提供一个Java发送http请求 ...

  4. 手把手教你从Core Data迁移到Realm

    来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...

  5. Ubuntu设置为命令行登录

    root@ubuntu:~# vi /etc/default/grub 改: #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMD ...

  6. Linux_破解密码-营救模式

    实验用机:CentOS 5.7 破解密码 设置开机启动界面 系统运行级别 营救模式 一.破解密码 root用户可以更改任何用户的密码,普通用户只能修改自己的密码. 步骤: 1.重新启动系统 2.开机倒 ...

  7. 滤波器——BoxBlur均值滤波及其快速实现

    个人博客地址:滤波器--BoxBlur均值滤波及其快速实现 动机:卷积核.滤波器.卷积.相关 在数字图像处理的语境里,图像一般是二维或三维的矩阵,卷积核(kernel)和滤波器(filter)通常指代 ...

  8. Git使用注意事项

    第一次用git时push时,突然想到我没有设置ssh key,却也可以push代码到自己仓库,那我本地登陆的账号Git是存在哪儿了呢? Git本地账户凭证管理 在第一次push到远程仓库时,git会提 ...

  9. Windows下的pydoc

    使用C调用python -m pydoc指令,实现命令行直接使用pydoc // Win32Project1.cpp : 定义控制台应用程序的入口点. // #include <stdio.h& ...

  10. xshell使用密钥登陆linux

    一.环境CentOS 7.4xshell 6 二.介绍远程ssh连接服务器 默认是用的密码验证的方式,而且还是root账号,这样的验证方式会有安全隐患,容易被人暴力破解root密码.如果改成用密钥登陆 ...