.NET框架开发技巧

.NET组件主动重命名

在Windows Forms开发,常常遇到一件头疼的工作是一个Form界面有许多控件,而这些控件的称号(Name)很难保持命名一致。比方,开发标准里边说,要给一切 的Button命名为以btn开发。若是界面中有二个按钮,断定和撤销,那么能够按照标准,为之命名为btnOK,btnCancel。再扩展到其它的控 件,都应该恪守这样的前缀命名法。

通过收拾,构成下面的表格标准

控件前缀举例
ButtonbtnbtnOK
ListViewlstlstProject
LabellbllblUserName
ComboxcmbcmbProjectType
TextBoxtxttxtUserId
CheckBoxchkchkEnable
GridViewgridgridProduct

当一个页面中有许多控件时,怎么确保控件命名,仍是这样的标准呢?

一种办法是有专门的代码查看,俗称Review,常常的花时间去改进代码,保护代码。从根本的命名上查看,修正,以契合标准。另一种办法便是我从高手的代码中学到的,解说如下。

当 你给一个按钮绑定资料库字段或是修正它的Label/Text/Caption特点时,参加设计时撑持,用这个姓名来交换无规律的命名。比方,拖一个按钮 Button控件到窗体中,它的称号是Button1, 这时修正它的Text=OK, 回车承认。这里我截获了控件的特点修正事情,所以修正控件Button1的姓名为btnOK。数据绑定特点也是相同,截获绑定的数据成员的称号,再依据它 来修正控件的称号,比方下面的一段代码所示

private Foundation.WinUI.Misc.Label lblDbPassword; private Foundation.WinUI.Editors.TextEditor txtDbUser; private Foundation.WinUI.Misc.Label lblDbUser; private Foundation.WinUI.Editors.TextEditor txtDbDatabase; private Foundation.WinUI.Misc.Label lblDbDatabase; private Foundation.WinUI.Editors.TextEditor txtDbServer; private Foundation.WinUI.Misc.Label lblDbServer; private Foundation.WinUI.Misc.GroupBox grpConnectionParameter1; private Foundation.WinUI.Editors.Grid grid;

对这些控件的称号,我没有任何的修正,仅仅对它绑定数据特点,结构会主动依据数据源的特点称号,进行修正,所以看起来标准程度高,彻底不需求人为的来履行标准。想象一下,当体系中的窗体许多,控件数量大的时分,这种智能的命名办法是多么的有功率,将代码标准贯彻到底。

这则窍门的完结办法是注册组件改动事情(ComponentChanged),如下面的代码所示

this.Site.GetService(typeof(IComponentChangeService)) as IComponentChangeService
2 .NET Remoting 效劳器端目标主动化装备

先来看一下,根本的.NET Remoting是怎么装备开发的。

先开发效劳器目标,便是要露出给客户端的目标

public class MyObject:MarshalByRefObject 
    { public int Add(int a,int b) 
        { return a+b; 
        } 
    }

效劳器端把它激活,供客户端衔接进来调用

[STAThread] static void Main(string[] args)
 {
           RemotingConfiguration.Configure("RemoteServer.exe.config");
           Console.ReadLine();
 }

由于这样的代码很节约,所以还需求在装备文件中作出如下的装备

<configuration> <system.runtime.remoting> <application name="RemoteServer"> <service> <wellknown type="RemoteObject.MyObject,RemoteObject" objectUri="RemoteObject.MyObject" mode="Singleton" /> service> <channels> <channel ref="tcp" port="9999"/> channels> application> system.runtime.remoting> configuration>

客户端代码,调用.NET Remoting效劳

[STAThread] static void Main(string[] args)
  {
          RemoteObject.MyObject app = (RemoteObject.MyObject)Activator.GetObject(typeof(RemoteObject.MyObject),System.Configuration.ConfigurationSettings.AppSettings["ServiceURL"]);
           Console.WriteLine(app.Add(1,2));
           Console.ReadLine();
  }

相同,仍是需求作出装备才能使上面的代码收效。

<configuration> <appSettings> <add key="ServiceURL" value="tcp://localhost:9999/RemoteObject.MyObject"/> appSettings> configuration>

 

我提出问题,若是要添加一个效劳器端目标MyObjectB,对上面的代码,需求修正几个当地?

添加代码(效劳完结和效劳接口的调用)是有必要的有些,不行少,别的需求修正的当地:

1  效劳器端的装备文件,添加效劳接口

2  客户端的装备文件,添加对效劳的引证

可是,开发高手给的答案是零修正,添加一个效劳,对效劳端或客户端不需求作出任何的修正。

怎么做到这一点呢,闻名的.NET通讯组件RemObjects ,它供给了一个通用的GUI东西,用于依据效劳端的接口,生成客户端的代码,按照这一点思路。咱们能够思考做一个东西。添加一个效劳器端目标后,为了让它 露出出来可用,要修正的当地是两个装备文件,所以,我只需求当有新的效劳器端目标要露出出来时,运用这个GUI东西,主动完结二个装备文件的修正,即可达 到零修正。并且用东西的优点是不会犯错,即便利又有功率。

我认为这两个思路的确不错,能让体系的可读性增强,又进步工作功率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值