程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#特性Attribute的實際應用之:為應用程序提供多個版本

C#特性Attribute的實際應用之:為應用程序提供多個版本

編輯:C#入門知識

基於如下的幾個理由,需要為應用程序提供多個版本:

1:應用程序有體驗版和完整功能版;

2:應用程序測試過程中需要完成一些自動化的操作;

 

1:提供體驗版

關於第一點,所謂體驗版也就是完整版的一個縮小版。即出於某種理由,不對用戶開放應用程序的全部功能。

假設我的應用程序共有兩類功能。第一類功能屬於單機版,而完整版還提供在線功能。那麼,在功能上,我需要定制兩個屬性"ONLINE"和"OFFLINE"。在體驗版中,我只開放"OFFLINE"功能。

要實現此目的,我不想提供兩套應用程序,而是想通過最小設置,就能為一個應用程序輸出兩個發布版本。這個時候,就需要.NET中的特性Attribute了。

首先,我們模擬離線和在線兩個功能:

 

 

\\代碼
class MyService 

{

[Conditional("OFFLINE")]

[Conditional("ONLINE")]

public static void Testing() { System.Windows.Forms.MessageBox.Show("offline game..."); }



[Conditional("ONLINE")]

public static void GetInfoFromNet() { System.Windows.Forms.MessageBox.Show("online game..."); }

}

 

 

程序入口:

 

\\代碼
private void button1_Click(object sender, EventArgs e) 

{

MyService.Testing();

}



private void button2_Click(object sender, EventArgs e)

{

MyService.GetInfoFromNet();

}

 

 

要實現兩個不同的功能,則需要在程序入口這個文件中定義:

 

 

 

#define ONLINE 

//#define OFFLINE



using System;

using System.Collections.Generic;

using System.ComponentModel;

 

 

 

1.1:全局宏定義

記住,這個定義一定要在文件的最開頭處。同時,該定義只對本文件有效,如果想定義全局,必須在項目屬性中定義,如下:

\

如果想定義多個全局宏定義,則用逗號隔開,如"LUMINJI,HUCHANGJUN"。

接下來的問題,就比較簡單了,如果要發布全功能,就#define ONLINE,如果要發布離線版功能,就注釋掉#define ONLINE,然後定義OFFLINE就行了。

 

2:為測試過程提供自動化操作

在測試UI的時候,需要操作各類文本框、列表等控件。舉個簡單的例子來說,一個登錄窗口,需要輸入用戶名和密碼。如果每次我測試的時候,都要讓我自己來輸入,勢必影響效率。這個時候,就可以讓Attribute來發揮作用了。

在如下示例中,在登錄窗口的Load事件中,我們為用戶名和密碼賦值,並模擬點擊Click事件。

 

\\代碼
#define TESTAUTO 



using
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved