欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      U8API開發(fā)手冊(C#版)

      時間:2019-05-14 08:04:16下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《U8API開發(fā)手冊(C#版)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《U8API開發(fā)手冊(C#版)》。

      第一篇:U8API開發(fā)手冊(C#版)

      U8API開發(fā)手冊

      作者:商平鋒

      版權(quán)所有:用友軟件股份有限公司 1.簡介

      U8API是為U8客戶化應(yīng)用開發(fā)提供的一套標(biāo)準(zhǔn)化的U8ERP業(yè)務(wù)編程接口。是U8UAP二次開發(fā)體系的重要組成部分。它包括一整套涵蓋U8ERP采購、銷售、庫存、制造(規(guī)劃中)、財務(wù)(規(guī)劃中)、基本檔案(規(guī)劃中)等業(yè)務(wù)模塊的API接口資源。U8API的推出為U8標(biāo)準(zhǔn)產(chǎn)品更好的適應(yīng)用戶的個性化需求,更好的實現(xiàn)客戶化交付提供了有力支持。

      U8API按照U8ERP業(yè)務(wù)產(chǎn)品模塊進(jìn)行分類,并以U8主要業(yè)務(wù)實體(單據(jù)、檔案、憑證)作為操作對象,提供了常用的基本操作。比如:對于庫存的收發(fā)單據(jù),提供“新增”、“審核”、“棄審”、“刪除”、“裝載”、“修改”六個API接口。目前,U8API提供了供應(yīng)鏈采購、銷售、庫存三個產(chǎn)品的所有單據(jù)的增刪改、審核/棄審等API接口,后續(xù)版本會逐步將制造、財務(wù)、基本檔案等模塊的API納入進(jìn)來。

      U8API通過“U8API資源管理器”對U8范圍內(nèi)所有API進(jìn)行集中統(tǒng)一分類管理,形成了一套完整的U8API資源庫。U8API的使用者可以使用“U8API資源管理器”瀏覽、查看API及其接口定義,并可輔助進(jìn)行代碼生成(目前支持C#和VB語言);API的開發(fā)者可以通過此工具發(fā)布、注冊API,所有業(yè)務(wù)API都必須在“U8API資源管理器”中進(jìn)行注冊。

      U8API還提供了一套運行時調(diào)用框架——U8APIBroker。它是所有U8API的調(diào)用代理,用戶要使用某個API只需調(diào)用U8APIBroker即可,無需直接訪問真正的API。U8APIBroker作為一個服務(wù)代理中間件,起到了隔離API的提供者與使用者的作用,降低了耦合依賴關(guān)系。

      U8API與U8EAI接口從功能上看比較相識,但它們的特性有差別。U8API采用傳統(tǒng)的編程模型,更靠近底層,業(yè)務(wù)邏輯粒度更細(xì),而且還需要或依賴一些特定的上下文環(huán)境,比如:login、事務(wù)等;而U8EAI接口則是完全松耦合的,采用XML和請求/響應(yīng)的消息傳遞模式,且業(yè)務(wù)粒度比較粗放。這些特性的差別決定了它們的應(yīng)用領(lǐng)域不同,U8API更適合于U8內(nèi)部的功能擴(kuò)展和客戶個性化開發(fā),而U8EAI則適合外部系統(tǒng)與U8之間以業(yè)務(wù)數(shù)據(jù)交換為特征的應(yīng)用集成開發(fā)。

      2.API應(yīng)用

      2.1.API總體應(yīng)用過程

      2.1.1 API瀏覽查找

      在“開始”->“程序”->“用友ERP-U8”->“UAP”目錄下找到“U8API資源管理器”,單擊,登錄,進(jìn)入“U8API資源管理器”。在左側(cè) “U8API” 樹形節(jié)點下,找到某某模塊,如“庫存管理”模塊(可以看到下面列有很多個單據(jù),如盤點單、采購入庫單等),展開要操作的單據(jù),分兩個子節(jié)點:“事件”和“服務(wù)接口”,在“服務(wù)接口”下可以看到該單據(jù)提供的API接口,如“添加新單據(jù)”、“審核單據(jù)”等。雙擊這些節(jié)點出現(xiàn)該API的詳細(xì)描述,如下圖2.1所示。在節(jié)點上右鍵單擊彈出“上下文菜單”,在“代碼示例”菜單項上彈出下一級子菜單,單擊它們,如單擊“C#代碼示例”則可以看到調(diào)用該API的C#示例代碼,如下圖2.2所示。直接拷貝這些代碼,然后在集成開發(fā)環(huán)境(IDE)中編輯和編譯這些代碼,即能實現(xiàn)調(diào)用U8標(biāo)準(zhǔn)API。利用這些代碼示例時,請按照其中每一步驟的提示說明正確操作,如添加必要的引用、按照自動生成的代碼填入正確的參數(shù)等。正確使用則可以調(diào)用成功,否則會返回詳細(xì)的錯誤信息。

      以下代碼中均以C#為例,VB語言請具體查看對應(yīng)的VB代碼示例部分。

      圖2.1 接口描述

      圖 2.2 代碼示例 2.1.2 API調(diào)用過程 ? 組件引用

      針對兩種語言,需要引用不同的組件。(1)C#:

      %U8SOFT%InteropInterop.U8Login.dll、%U8SOFT%InteropInterop.MSXML2.dll、%U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.U8APIFramework.dll、%U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.MomServiceCommon.dll、%U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.U8MOMAPIFramework.dll 如下圖2.3、2.4、2.5所示。

      (2)VB:

      %U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.U8APIFramework.tlb、%U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.MomServiceCommon.tlb、%U8SOFT%UFMOMU8APIFrameworkUFIDA.U8.U8MOMAPIFramework.tlb、添加Microsoft XML v3.0引用 如下圖2.6、2.7所示。

      其中,%U8SOFT%表示U8-872的安裝目錄。

      圖 2.3 添加對U8Login.dll引用

      圖 2.4 添加對Interop.MSXML2.dll引用

      圖 2.5 添加對U8API框架類庫引用(.dll)

      圖2.6 添加對U8API框架類庫引用(.tlb)

      圖2.7 添加Microsoft XML v3.0引用 ? API調(diào)用

      添加必要的引用后,可以直接利用自動生成的代碼示例(支持C#和VB兩種語言),結(jié)合API接口詳細(xì)描述,填入必要的參數(shù)值,就可以調(diào)用U8 API。

      總體上,對U8 API的調(diào)用分成七個步驟: 1)構(gòu)造u8login對象并登陸;

      2)構(gòu)造環(huán)境上下文對象,傳入login,并按需設(shè)置其它上下文參數(shù); 3)設(shè)置API地址標(biāo)識(Url)參數(shù); 4)構(gòu)造APIBroker; 5)API參數(shù)賦值; 6)調(diào)用API;

      7)獲取返回結(jié)果。

      詳細(xì)的API調(diào)用過程請看下文“API內(nèi)容”中各個模塊中介紹的“開發(fā)步驟”。

      下面重點介紹幾個關(guān)鍵要點和步驟:環(huán)境上下文、API地址、APIBroker、普通參數(shù)賦值、BO參數(shù)賦值。

      ? 環(huán)境上下文

      環(huán)境上下文指在調(diào)用U8API時需要初始化的調(diào)用環(huán)境,包括Login、事務(wù)、特殊的業(yè)務(wù)參數(shù)等。環(huán)境上下文被初始化后,相關(guān)的環(huán)境參數(shù)會被業(yè)務(wù)API使用。

      U8EnvContext envContext = new U8EnvContext();? Login 需要將U8Login對象傳遞給環(huán)境上下文,U8Login對象必須已經(jīng)登錄過。envContext.U8Login = u8Login;? 事務(wù)

      如果需要由外部發(fā)起事務(wù),則可以發(fā)起事務(wù)的ADOConnection對象傳遞給環(huán)境上下文: ADODB.ConnectionClass conn = new ConnectionClass();envContext.BizDbConnection = conn;同時需要設(shè)置一個外部事務(wù)標(biāo)記:

      envContext.IsIndependenceTransaction = true;

      ? 特殊業(yè)務(wù)參數(shù)

      特殊業(yè)務(wù)參數(shù)指調(diào)用某些API需要設(shè)置的特定上下文參數(shù),比如:銷售的API必須要設(shè)置如VoucherType上下文參數(shù),設(shè)置方法為: envContext.SetApiContext(“VoucherType”, 23);

      ? API地址

      API地址是指API在U8API系統(tǒng)中的唯一標(biāo)識,也叫API的URI,調(diào)用API時,需要通過API地址構(gòu)建一個代表此API的Broker對象:

      U8ApiAddress myApiAddress = new U8ApiAddress(“U8API/PurchaseOrder/VoucherSave”);

      ? APIBroker APIBroker是所有U8API的調(diào)用代理接口。使用U8所有API都必須通過APIBroker間接調(diào)用。APIBroker作為一個服務(wù)代理中間件,起到了隔離API的提供者與使用者的作用,降低了耦合依賴關(guān)系。創(chuàng)建APIBroker必須傳入API地址和環(huán)境上下文:

      U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

      ? 普通參數(shù)賦值

      API參數(shù)分兩種類型:BO參數(shù)和普通參數(shù)。普通參數(shù)是指非單據(jù)表頭表體類型的參數(shù),包括基本類型參數(shù)(String、Integer等)、知名對象參數(shù)(Connection、DOMDocument等)。普通參數(shù)的賦值采用如下方式:

      broker.AssignNormalValue(“voucherState”, 2);

      ? BO參數(shù)賦值

      BO參數(shù)即單據(jù)表頭或表體類型的參數(shù)。對BO參數(shù),支持兩種方式傳入,一種傳BO對象,另一種傳DOM對象。以下分別介紹: ? 傳BO對象

      給BO表頭參數(shù)或表體參數(shù)賦值,推薦使用BO對象(BussinessObject)。例如:

      BusinessObject DomHead = broker.GetBoParam(“DomHead”);

      /***************************** 以下是非必輸字段****************************/ DomHead[0][“ipresent”] = “";//現(xiàn)存量,string類型 DomHead[0][”cmaketime“] = ”“;//制單時間,DateTime類型 DomHead[0][”cmodifytime“] = ”“;//修改時間,DateTime類型 /****************************** 以下是必輸字段****************************/ DomHead[0][”poid“] = ”“;//主關(guān)鍵字段,int類型 DomHead[0][”dpodate“] = ”“;//日期,DateTime類型 DomHead[0][”cpoid“] = ”“;//訂單編號,string類型 DomHead.RowCount = 10;//設(shè)置行數(shù),不設(shè)置也可

      //給BO對象的字段賦值,值可以是真實類型,也可以是無類型字符串 //以下代碼示例只設(shè)置第一行值。各字段定義詳見API服務(wù)接口定義

      ??

      ??

      在此種情況下U8 API框架會對BO對象各字段進(jìn)行參數(shù)校驗。對字段進(jìn)行賦值時,值可以是真實類型,也可以是無類型字符串。? 傳DOM對象

      給BO表頭參數(shù)或表體參數(shù)賦值,也支持直接傳入DOM對象(DOMDocument)。例如:

      MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass();domHead.load(”domHead.xml“);broker.AssignNormalValue(”domHead“, domHead);但是,在此種情況下U8 API框架不會對DOM對象進(jìn)行參數(shù)驗證。請在使用該方法之前,確保DOM對象的正確性。2.1.3 API典型應(yīng)用場景 ? 執(zhí)行單一操作

      單一操作指一項任務(wù)只需要一個API完成,比如:單據(jù)新增、審核/棄審、刪除等單一操作。這是API調(diào)用最常見的場景,只需按照API的接口規(guī)范構(gòu)造參數(shù)直接調(diào)用即可。

      ? 執(zhí)行復(fù)合操作

      復(fù)合操作,即一項任務(wù)由多個API的協(xié)作來完成。比如,自定義的單據(jù)維護(hù)界面的主要邏輯,一般由以下四個步驟構(gòu)成:

      1)加載單據(jù);

      2)在編輯界面上顯示; 3)用戶修改單據(jù)字段; 4)提交保存。

      以上步驟需要進(jìn)行兩次API調(diào)用: 1)加載單據(jù)時候調(diào)用“加載API”,以獲取單據(jù)BO對象(或原始DOM對象)并在界面上展現(xiàn);

      2)用戶在修改單據(jù)時其實就是在修改BO對象,用戶保存單據(jù)時調(diào)用“保存API”,此時要將此BO對象傳給“保存API”(而不用構(gòu)造新的BO對象)。

      代碼示例:

      首先,登陸;

      //構(gòu)造u8login對象并登陸

      U8Login.clsLogin u8Login = new U8Login.clsLogin();String sSubId = ”AS“;String sAccID = ”(default)@001“;String sYear = ”2008“;String sUserID = ”demo“;String sPassword = ”“;String sDate = ”2008-09-30“;String sServer = ”localhost“;String sSerial = ”“;if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)){

      } Console.WriteLine(”登陸失敗,原因:“ + u8Login.ShareString);Marshal.FinalReleaseComObject(u8Login);return;然后,通過LOAD接口獲取BO對象;

      //構(gòu)造環(huán)境上下文對象,傳入login,并按需設(shè)置其它上下文參數(shù) U8EnvContext envContext = new U8EnvContext();envContext.U8Login = u8Login;//設(shè)置上下文參數(shù)

      ??

      //設(shè)置API地址標(biāo)識(Url)

      U8ApiAddress myApiAddress = new U8ApiAddress(“裝載單據(jù)的地址標(biāo)識”);//構(gòu)造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);//API參數(shù)賦值

      broker.AssignNormalValue(”參數(shù)名“, ”參數(shù)值“);??

      //調(diào)用LOAD接口API if(!broker.Invoke()){

      } //獲取表頭或表體的BO對象,如果要取原始的XMLDOM對象結(jié)果,請使用GetResult(參數(shù)名)BusinessObject DomRet = broker.GetBoParam(”表頭或表體參數(shù)名“);//錯誤處理

      Exception apiEx = broker.GetException();if(apiEx!= null){

      } //結(jié)束本次調(diào)用,釋放API資源 broker.Release();return;if(apiEx is MomSysException){

      } else if(apiEx is MomBizException){

      } MomBizException bizEx = apiEx as MomBizException;Console.WriteLine(”API異常:“ + bizEx.Message);//todo:異常處理 MomSysException sysEx = apiEx as MomSysException;Console.WriteLine(”系統(tǒng)異常:“ + sysEx.Message);//todo:異常處理

      接著,BO對象經(jīng)用戶修改重新賦值,并傳遞給UPDATE接口提交保存;

      //修改獲取的BO對象,對需要更改的字段重新賦值 DomRet[0][”字段名“] = 新的字段值;??

      //重新構(gòu)造“新增或修改”API的地址標(biāo)識

      myApiAddress = new U8ApiAddress(”新增或修改”API的地址標(biāo)識“);//重新構(gòu)造APIBroker broker = new U8ApiBroker(myApiAddress, envContext);//表頭或表體參數(shù)賦值

      broker.SetBoParam(”表頭或表體參數(shù)名“, DomRet);//API參數(shù)賦值

      broker.AssignNormalValue(”參數(shù)名“, ”參數(shù)值“);??

      //調(diào)用UPDATE接口API if(!broker.Invoke()){ } ??

      最后,獲取返回結(jié)果。

      //獲取普通返回值

      System.String result = broker.GetReturnValue()as System.String;//獲取out/inout參數(shù)值 ??

      //結(jié)束本次調(diào)用,釋放API資源 broker.Release();

      2.2.API內(nèi)容 2.2.1 采購管理

      ? 功能介紹

      為了支持U8二次開發(fā)對業(yè)務(wù)單據(jù)的開發(fā),本功能提供了實現(xiàn)采購業(yè)務(wù)單據(jù)各種操作功能的編程接口。使用采購管理的API開發(fā)接口,可以對庫存管理中的采購到貨單、采購普通發(fā)票、采購專用發(fā)票、采購訂單、請購單、采購運費發(fā)票等單據(jù)進(jìn)行審核、棄審、獲?。ɑ蜓b載)、新增、修改、刪除。

      ? 使用環(huán)境

      必須安裝.NET FrameWork 2.0; 必須安裝U8-872版本的采購管理產(chǎn)品; 必須安裝API適配器組件PUAPIConcrete.dll ? 接口說明

      采購管理二次開發(fā)接口說明:

      ? 審核單據(jù)-ConfirmPO方法

      參數(shù):

      domHead

      —— 單據(jù)表頭,DOM對象,必輸 API上下文:

      VoucherType —— 單據(jù)類型,具體類型參看API上下文描述 bPositive —— 紅藍(lán)標(biāo)識:True,藍(lán)字 ;False,紅字 sBillType —— 為空串

      sBusType —— 業(yè)務(wù)類型:普通采購,直運采購,受托代銷

      ? 棄審單據(jù)-CancelconfirmPO方法

      參數(shù):

      domHead

      —— 單據(jù)表頭,DOM對象,必輸 API上下文:

      VoucherType —— 單據(jù)類型,具體類型參看API上下文描述 bPositive —— 紅藍(lán)標(biāo)識:True,藍(lán)字 ;False,紅字 sBillType —— 為空串

      sBusType —— 業(yè)務(wù)類型:普通采購,直運采購,受托代銷

      ? 裝載單據(jù)-Load方法 參數(shù):

      DomHead

      —— 表頭DOM對象 domBody

      —— 表體DOM對象 strWhere —— 過濾條件串 varVoucherID —— 單據(jù)主表ID strLocateWhere —— 定位條件串 API上下文:

      VoucherType —— 單據(jù)類型,具體類型參看API上下文描述 bPositive —— 紅藍(lán)標(biāo)識:True,藍(lán)字 ;False,紅字 sBillType —— 為空串

      sBusType —— 業(yè)務(wù)類型:普通采購,直運采購,受托代銷

      ? 刪除單據(jù)-Delete方法

      參數(shù):

      DomHead

      —— 表頭DOM對象 domBody

      —— 表體DOM對象

      CurDom —— 返回DOM格式錯誤信息 API上下文:

      VoucherType —— 單據(jù)類型,具體類型參看API上下文描述 bPositive —— 紅藍(lán)標(biāo)識:True,藍(lán)字 ;False,紅字 sBillType —— 為空串

      sBusType —— 業(yè)務(wù)類型:普通采購,直運采購,受托代銷

      ? 新增或修改新單據(jù)-VoucherSave方法

      參數(shù):

      DomHead

      —— 單據(jù)表頭,DOM對象,必輸 domBody

      —— 單據(jù)表體,DOM對象,必輸

      VoucherState —— 保存狀態(tài),必輸。2增加;1修改 ;0非編輯 curID

      —— 返回單據(jù)頭ID CurDom —— 返回DOM格式錯誤信息 UserMode —— 使用模式,0:CS;1:BS API上下文:

      VoucherType —— 單據(jù)類型,具體類型參看API上下文描述 bPositive —— 紅藍(lán)標(biāo)識:True,藍(lán)字 ;False,紅字 sBillType —— 為空串

      sBusType —— 業(yè)務(wù)類型:普通采購,直運采購,受托代銷

      ? 開發(fā)步驟

      實現(xiàn)采購單據(jù)某一功能,主要有以下七個步驟: 1. 構(gòu)造u8login對象并登陸

      聲明和創(chuàng)建u8login類對象前應(yīng)該先引用U8API類庫中的Interop.U8Login.dll,代碼示例如下:

      U8Login.clsLogin u8Login = new U8Login.clsLogin();//聲明u8login對象 String sSubId = ”AS“;String sYear = ”2008“;String sUserID = ”demo“;String sPassword = ”“;String sDate = ”2008-09-30“;String sServer = ”localhost“;String sSerial = ”“;if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)){

      } Console.WriteLine(”登陸失敗,原因:“ + u8Login.ShareString);Marshal.FinalReleaseComObject(u8Login);return;

      //登陸

      String sAccID = ”(default)@001“;如果當(dāng)前環(huán)境中有l(wèi)ogin對象則可以省去第一步。

      2. 構(gòu)造環(huán)境上下文對象,傳入login,并按需設(shè)置其它上下文參數(shù)

      U8EnvContext envContext = new U8EnvContext();

      envContext.U8Login = u8Login;//設(shè)置上下文參數(shù)

      envContext.SetApiContext(”VoucherType“, new int());//上下文數(shù)據(jù)類型:int,含義:單據(jù)類型 envContext.SetApiContext(”bPositive“, new bool());//上下文數(shù)據(jù)類型:bool,含義:紅藍(lán)標(biāo)

      識:True,藍(lán)字

      envContext.SetApiContext(”sBillType“, new string());//上下文數(shù)據(jù)類型:string,含義:為空

      envContext.SetApiContext(”sBusType“, new string());//上下文數(shù)據(jù)類型:string,含義:業(yè)務(wù)

      類型:普通采購,直運采購,受托代銷

      //構(gòu)造環(huán)境上下文對象 //傳入login 如果是外部事務(wù),則需要傳遞ADO.Connection對象,并將IsIndependenceTransaction設(shè)置為true:

      envContext.BizDbConnection = new ADO.Connection();envContext.IsIndependenceTransaction = true;3. 設(shè)置API地址標(biāo)識(Url)參數(shù)

      //如當(dāng)前API“新增或修改”的地址標(biāo)識為:U8API/PurchaseOrder/VoucherSave

      U8ApiAddress myApiAddress = new U8ApiAddress(”U8API/PurchaseOrder/VoucherSave“);4. 構(gòu)造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

      5. API對象參數(shù)賦值

      1)給BO表頭參數(shù)DomHead和表體參數(shù)domBody賦值有兩種方法,如下: 方法一是直接傳入MSXML2.DOMDocumentClass對象,代碼如下

      MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass();domHead.load(”domHead.xml“);broker.AssignNormalValue(”domHead“, domHead);

      方法二是構(gòu)造BusinessObject對象,具體方法如下:

      //首先通過GetBoParam方法獲取表頭表體參數(shù)

      注意:設(shè)置行數(shù)為某個值,行數(shù)并不限定為該最大值,可以一直順序添加至任意行,但有一個規(guī)則:例如當(dāng)設(shè)置為10時,可以對第0、1、??9行賦值,當(dāng)對第10行賦值時候,則會順序添加一個新行,但此時是不能對第11行賦值的,當(dāng)添加一個新行(第10行)后,又可以對第11行進(jìn)行賦值。

      /****************************** 以下是必輸字段 ****************************/ DomHead[0][”poid“] = ”“;//主關(guān)鍵字段,int類型 DomHead[0][”dpodate“] = ”“;//日期,DateTime類型 DomHead[0][”cpoid“] = ”“;//訂單編號,string類型 DomHead[0][”cvenabbname“] = ”“;//供貨單位,string類型 DomHead[0][”cexch_name“] = ”“;//幣種,string類型 DomHead[0][”nflat“] = ”“;//匯率,double類型 ??

      /***************************** 以下是非必輸字段 ****************************/ DomHead[0][”ipresent“] = ”“;//現(xiàn)存量,string類型 DomHead[0][”cmaketime“] = ”“;//制單時間,DateTime類型 DomHead[0][”cmodifytime“] = ”“;//修改時間,DateTime類型 DomHead[0][”caudittime“] = ”“;//審核時間,DateTime類型 DomHead[0][”cauditdate“] = ”“;//審核日期,DateTime類型 DomHead[0][”cmodifydate“] = ”“;//修改日期,DateTime類型 BusinessObject DomHead = broker.GetBoParam(”DomHead“);DomHead.RowCount = 10;//設(shè)置行數(shù)

      //其中,給BO對象的字段賦值,值可以是真實類型,也可以是無類型字符串 //以下代碼示例只設(shè)置第一行值。各字段定義詳見API服務(wù)接口定義

      ??

      2)給普通參數(shù)賦值 例如,//給普通參數(shù)VoucherState(參數(shù)名)賦值。此參數(shù)的數(shù)據(jù)類型為int,此參數(shù)按值傳遞,具體請參考服務(wù)接口定義

      broker.AssignNormalValue(”VoucherState“, new int());注意:所有參數(shù)名不限大小寫。

      3)給“OUT型”參數(shù)賦值

      為方便用戶使用U8API,如果參數(shù)數(shù)據(jù)類型為一般值類型,如String、Integer、Long、Single、Double、Boolean、Date,則不必傳入一個參數(shù)變量(傳入也可);否則,則必須一個參數(shù)變量。

      如: ??

      //該參數(shù)curID為OUT型參數(shù),由于其數(shù)據(jù)類型為string,為一般值類型,因此不必傳入一個參數(shù)變量。在API調(diào)用返回時,可以通過GetResult(”curID“)獲取其值

      //該參數(shù)CurDom為OUT型參數(shù),由于其數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,非一般值類型,因此必須傳入一個參數(shù)變量。在API調(diào)用返回時,可以直接使用該參數(shù)

      MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.IXMLDOMDocument2();broker.AssignNormalValue(”CurDom“, CurDom);??

      當(dāng)不傳入一個參數(shù)變量時,在API調(diào)用返回時,可以通過GetResult(參數(shù)名)獲取其值;當(dāng)不必傳入一個參數(shù)變量時,在API調(diào)用返回時,可以直接引用該參數(shù)。

      4)給“INOUT型”參數(shù)賦值 對“INOUT型”型參數(shù),則不論是否是一般值類型,都需要傳入?yún)?shù)變量。其他與“OUT型”參數(shù)一樣。

      6. 調(diào)用API //示例調(diào)用如下:

      if(!broker.Invoke())

      {

      //錯誤處理

      Exception apiEx = broker.GetException();if(apiEx!= null){

      if(apiEx is MomSysException){

      } else if(apiEx is MomBizException){

      } MomBizException bizEx = apiEx as MomBizException;Console.WriteLine(”API異常:“ + bizEx.Message);//todo:異常處理 MomSysException sysEx = apiEx as MomSysException;Console.WriteLine(”系統(tǒng)異常:“ + sysEx.Message);//todo:異常處理

      } } //結(jié)束本次調(diào)用,釋放API資源 broker.Release();return;注意:對調(diào)用失敗,可以獲取出錯信息,如果是API框架的原因,則報告MomSysException異常,如果是業(yè)務(wù)組件的原因,則報告MomBizException異常。

      7. 獲取返回結(jié)果

      1)獲取BO對象

      在“裝載單據(jù)”時,通過GetBoParam方法獲取表頭或表體參數(shù)

      BusinessObject DomHeadRet = broker.GetBoParam(”DomHead“);Console.WriteLine(”BO對象行數(shù)為:“ + DomHeadRet.RowCount);//獲取BO對象的行數(shù) 如果要取原始的XMLDOM對象結(jié)果,請使用GetResult(”DomHead“)as MSXML2.DOMDocument MSXML2.DOMDocument DomHeadRet = broker.GetResult(”DomHead“)as MSXML2.DOMDocument;以上獲取的行數(shù)是BO對象的實際行數(shù)。

      //獲取BO對象各字段的值。以下代碼示例只取第一行。字段定義詳見API服務(wù)接口定義

      /****************************** 以下是必輸字段 ****************************/ int poid = Convert.ToInt32(DomHeadRet[0][”poid“]);//主關(guān)鍵字段,int類型

      DateTime dpodate = Convert.ToDateTime(DomHeadRet[0][”dpodate“]);//日期,DateTime類型 string cpoid = Convert.ToString(DomHeadRet[0][”cpoid“]);//訂單編號,string類型 ??

      /***************************** 以下是非必輸字段 ****************************/ string ipresent = Convert.ToString(DomHeadRet[0][”ipresent“]);//現(xiàn)存量,string類型 DateTime cmaketime = Convert.ToDateTime(DomHeadRet[0][”cmaketime“]);//制單時間,DateTime類型 ?? 注意:

      2)獲取普通返回值

      代碼如下:

      //獲取普通返回值。此返回值數(shù)據(jù)類型為System.String,此參數(shù)按值傳遞,具體請參考服務(wù)接口定義 System.String result = broker.GetReturnValue()as System.String;3)獲取普通“OUT型”或“INOUT型”返回值

      如前所述,對普通“OUT型”或“INOUT型”參數(shù),如果是一般值類型,則通過GetResult方法獲取其返回值,否則直接使用該引用。

      如,//獲取普通OUT參數(shù)curID。此返回值數(shù)據(jù)類型為string,在使用該參數(shù)之前,請判斷是否為空 string curIDRet = broker.GetResult(”curID“)as string;

      //獲取普通OUT參數(shù)CurDom。此返回值數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,前面已定義該參數(shù),請直接使用 ??

      2.2.2 銷售管理

      ? 功能介紹

      為了支持U8二次開發(fā)對業(yè)務(wù)單據(jù)的開發(fā),本功能提供了實現(xiàn)銷售業(yè)務(wù)單據(jù)各種操作功能的編程接口。使用銷售管理API開發(fā)接口,可以完成銷售管理的銷售報價單、銷售訂單、銷售發(fā)貨單、銷售退貨單、銷售普通發(fā)票、銷售專用發(fā)票、委托代銷發(fā)貨單、委托代銷結(jié)算單、銷售調(diào)撥單等單據(jù)的審核、棄審、獲取、新增、修改、刪除。

      ? 使用環(huán)境

      必須安裝.NET FrameWork 2.0; 必須安裝U8-872版本的銷售管理產(chǎn)品; 必須安裝API適配器組件SAAPIConcrete.dll;

      ? 接口說明

      銷售管理二次開發(fā)接口及參數(shù)說明: ? 審核或棄審單據(jù)-Audit方法

      參數(shù):

      domHead

      —— 單據(jù)表頭,DOM對象,必輸 bVerify

      —— 審核/棄審標(biāo)志,必輸。true表審核;false表棄審

      API上下文:

      VoucherType —— 單據(jù)類型,必輸。具體類型參看API上下文描述

      ? 刪除單據(jù)-Delete方法

      參數(shù):

      domHead —— 單據(jù)表頭,DOM對象,必輸 API上下文:

      VoucherType —— 單據(jù)類型,必輸。具體類型參看API上下文描述

      ? 裝載單據(jù)-Load方法

      參數(shù):

      domHead

      —— 單據(jù)表頭,DOM對象,必輸 domBody

      —— 單據(jù)表體,DOM對象,必輸 VouchID

      —— 需要裝載的單據(jù)號,可選 blnAuth

      —— 是否控制權(quán)限:true

      API上下文:

      VoucherType —— 單據(jù)類型,必輸。具體類型參看API上下文描述

      ? 新增或修改單據(jù)-Save方法

      參數(shù):

      domHead

      —— 單據(jù)表頭,DOM對象,必輸 domBody

      —— 單據(jù)表體,DOM對象,必輸 VoucherState —— 保存狀態(tài),必輸。0增加;1修改 VNewID

      —— 單據(jù)的id,可選 DomConfig

      —— ATO,PTO選配配置,必輸,可設(shè)置為nothing API上下文:

      VoucherType —— 單據(jù)類型,必輸。具體類型參看API上下文描述

      ? 開發(fā)步驟

      實現(xiàn)銷售單據(jù)某一功能,主要有以下七個步驟: 1. 構(gòu)造u8login對象并登陸

      聲明和創(chuàng)建u8login類對象前應(yīng)該先引用U8API類庫中的Interop.U8Login.dll,代碼示例如下:

      U8Login.clsLogin u8Login = new U8Login.clsLogin();//聲明u8login對象 String sSubId = ”AS“;String sYear = ”2008“;String sUserID = ”demo“;String sPassword = ”“;String sDate = ”2008-09-30“;String sServer = ”localhost“;String sSerial = ”“;if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)){

      } Console.WriteLine(”登陸失敗,原因:“ + u8Login.ShareString);Marshal.FinalReleaseComObject(u8Login);return;

      //登陸

      String sAccID = ”(default)@001“;如果當(dāng)前環(huán)境中有l(wèi)ogin對象則可以省去第一步。

      2. 構(gòu)造環(huán)境上下文對象,傳入login,并按需設(shè)置其它上下文參數(shù)

      U8EnvContext envContext = new U8EnvContext();

      envContext.U8Login = u8Login;//設(shè)置上下文參數(shù)

      envContext.SetApiContext(”VoucherType“, new int());//上下文數(shù)據(jù)類型:int,含義:單據(jù)類型

      //構(gòu)造環(huán)境上下文對象 //傳入login

      如果是外部事務(wù),則需要傳遞ADO.Connection對象,并將IsIndependenceTransaction設(shè)置為true:

      envContext.BizDbConnection = new ADO.Connection();envContext.IsIndependenceTransaction = true;3. 設(shè)置API地址標(biāo)識(Url)參數(shù)

      //如當(dāng)前API“新增或修改”的地址標(biāo)識為:U8API/SaleOrder/Save

      U8ApiAddress myApiAddress = new U8ApiAddress(”U8API/SaleOrder/Save“);4. 構(gòu)造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

      5. API對象參數(shù)賦值

      1)給BO表頭參數(shù)DomHead和表體參數(shù)domBody賦值有兩種方法,如下: 方法一是直接傳入MSXML2.DOMDocumentClass對象,代碼如下

      MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass();domHead.load(”domHead.xml“);broker.AssignNormalValue(”domHead“, domHead);

      方法二是構(gòu)造BusinessObject對象,具體方法如下:

      //首先通過GetBoParam方法獲取表頭表體參數(shù)

      注意:設(shè)置行數(shù)為某個值,行數(shù)并不限定為該最大值,可以一直順序添加至任意行,但有一個規(guī)則:例如當(dāng)設(shè)置為10時,可以對第0、1、??9行賦值,當(dāng)對第10行賦值時候,則會順序添加一個新行,但此時是不能對第11行賦值的,當(dāng)添加一個新行(第10行)后,又可以對第11行進(jìn)行賦值。

      /****************************** 以下是必輸字段 ****************************/ domHead[0][”id“] = ”“;//主關(guān)鍵字段,int類型 domHead[0][”csocode“] = ”“;//訂 單 號,string類型 domHead[0][”ddate“] = ”“;//訂單日期,DateTime類型 domHead[0][”cbustype“] = ”“;//業(yè)務(wù)類型,string類型

      ??

      /***************************** 以下是非必輸字段 ****************************/ domHead[0][”fstockquanO“] = ”“;//現(xiàn)存件數(shù),double類型 BusinessObject DomHead = broker.GetBoParam(”DomHead“);DomHead.RowCount = 10;//設(shè)置行數(shù)

      //其中,給BO對象的字段賦值,值可以是真實類型,也可以是無類型字符串 //以下代碼示例只設(shè)置第一行值。各字段定義詳見API服務(wù)接口定義

      domHead[0][”fcanusequanO“] = ”“;//可用件數(shù),double類型 domHead[0][”dpredatebt“] = ”“;//預(yù)發(fā)貨日期,DateTime類型 domHead[0][”dpremodatebt“] = ”“;//預(yù)完工日期,DateTime類型 domHead[0][”dpredatebt“] = ”“;//預(yù)發(fā)貨日期,DateTime類型

      ??

      2)給普通參數(shù)賦值 例如,//給普通參數(shù)VoucherState(參數(shù)名)賦值。此參數(shù)的數(shù)據(jù)類型為int,此參數(shù)按值傳遞,具體請參考服務(wù)接口定義

      broker.AssignNormalValue(”VoucherState“, new int());注意:所有參數(shù)名不限大小寫。

      3)給“OUT型”參數(shù)賦值

      為方便用戶使用U8API,如果參數(shù)數(shù)據(jù)類型為一般值類型,如String、Integer、Long、Single、Double、Boolean、Date,則不必傳入一個參數(shù)變量(傳入也可);否則,則必須一個參數(shù)變量。

      如: ??

      //該參數(shù)curID為OUT型參數(shù),由于其數(shù)據(jù)類型為string,為一般值類型,因此不必傳入一個參數(shù)變量。在API調(diào)用返回時,可以通過GetResult(”curID“)獲取其值

      //該參數(shù)CurDom為OUT型參數(shù),由于其數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,非一般值類型,因此必須傳入一個參數(shù)變量。在API調(diào)用返回時,可以直接使用該參數(shù)

      MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.IXMLDOMDocument2();broker.AssignNormalValue(”CurDom“, CurDom);??

      當(dāng)不傳入一個參數(shù)變量時,在API調(diào)用返回時,可以通過GetResult(參數(shù)名)獲取其值;當(dāng)不必傳入一個參數(shù)變量時,在API調(diào)用返回時,可以直接引用該參數(shù)。

      4)給“INOUT型”參數(shù)賦值 對“INOUT型”型參數(shù),則不論是否是一般值類型,都需要傳入?yún)?shù)變量。其他與“OUT型”參數(shù)一樣。

      6. 調(diào)用API //示例調(diào)用如下:

      if(!broker.Invoke())

      {

      //錯誤處理

      Exception apiEx = broker.GetException();if(apiEx!= null){ if(apiEx is MomSysException)

      }

      } {

      } else if(apiEx is MomBizException){

      } MomBizException bizEx = apiEx as MomBizException;Console.WriteLine(”API異常:“ + bizEx.Message);//todo:異常處理 MomSysException sysEx = apiEx as MomSysException;Console.WriteLine(”系統(tǒng)異常:“ + sysEx.Message);//todo:異常處理

      //結(jié)束本次調(diào)用,釋放API資源 broker.Release();return;注意:對調(diào)用失敗,可以獲取出錯信息,如果是API框架的原因,則報告MomSysException異常,如果是業(yè)務(wù)組件的原因,則報告MomBizException異常。

      7. 獲取返回結(jié)果

      1)獲取BO對象

      在“裝載單據(jù)”時,通過GetBoParam方法獲取表頭或表體參數(shù)

      BusinessObject DomHeadRet = broker.GetBoParam(”DomHead“);Console.WriteLine(”BO對象行數(shù)為:“ + DomHeadRet.RowCount);//獲取BO對象的行數(shù) 如果要取原始的XMLDOM對象結(jié)果,請使用GetResult(”DomHead“)as MSXML2.DOMDocument MSXML2.DOMDocument DomHeadRet = broker.GetResult(”DomHead“)as MSXML2.DOMDocument;以上獲取的行數(shù)是BO對象的實際行數(shù)。

      //獲取BO對象各字段的值。以下代碼示例只取第一行。字段定義詳見API服務(wù)接口定義

      /****************************** 以下是必輸字段 ****************************/ int id = Convert.ToInt32(domHeadRet[0][”id“]);//主關(guān)鍵字段,int類型

      string ccode = Convert.ToString(domHeadRet[0][”ccode“]);//單據(jù)號,string類型 DateTime ddate = Convert.ToDateTime(domHeadRet[0][”ddate“]);//日期,DateTime類型 string cbustype = Convert.ToString(domHeadRet[0][”cbustype“]);//業(yè)務(wù)類型,string類型 ??

      /***************************** 以下是非必輸字段 ****************************/ string cpayname = Convert.ToString(domHeadRet[0][”cpayname“]);//付款條件,string類型 string cpersonname = Convert.ToString(domHeadRet[0][”cpersonname“]);//業(yè) 務(wù) 員,string類型 double itaxrate = Convert.ToDouble(domHeadRet[0][”itaxrate“]);//稅率,double類型 string cexch_name = Convert.ToString(domHeadRet[0][”cexch_name“]);//幣種,string類型 ?? 注意:

      2)獲取普通返回值

      代碼如下:

      //獲取普通返回值。此返回值數(shù)據(jù)類型為System.String,此參數(shù)按值傳遞,具體請參考服務(wù)接口定義 System.String result = broker.GetReturnValue()as System.String;3)獲取普通“OUT型”或“INOUT型”返回值

      如前所述,對普通“OUT型”或“INOUT型”參數(shù),如果是一般值類型,則通過GetResult方法獲取其返回值,否則直接使用該引用。

      如,//獲取普通OUT參數(shù)curID。此返回值數(shù)據(jù)類型為string,在使用該參數(shù)之前,請判斷是否為空 string curIDRet = broker.GetResult(”curID“)as string;

      //獲取普通OUT參數(shù)CurDom。此返回值數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,前面已定義該參數(shù),請直接使用 ??

      2.2.3 庫存管理

      ? 功能介紹

      為了支持U8二次開發(fā)對業(yè)務(wù)單據(jù)的開發(fā),本功能提供了實現(xiàn)庫存業(yè)務(wù)單據(jù)各種操作功能的編程接口。使用庫存管理的API開發(fā)接口,可以對庫存管理中的采購入庫單、其他入庫單、其他出庫單、產(chǎn)成品入庫單、材料出庫單、調(diào)撥單、組裝單、拆卸單、形態(tài)轉(zhuǎn)換單、盤點單、貨位調(diào)整單、銷售出庫單、期初結(jié)存、不合格品記錄單、不合格品處理單、期初不合格品、調(diào)撥申請單等單據(jù)進(jìn)行審核、棄審、獲?。ɑ蜓b載)、新增、修改、刪除。

      ? 使用環(huán)境

      必須安裝.NET FrameWork 2.0; 必須安裝U8-872版本的庫存管理產(chǎn)品; 必須安裝API適配器組件STAPIConcrete.dll ? 接口說明

      庫存管理二次開發(fā)接口說明:

      ? 審核單據(jù)-Audit方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 VoucherId

      —— 單據(jù)ID errMsg

      —— 錯誤信息

      cnnFrom —— 連接對象(調(diào)用方控制事務(wù)時需要傳入連接對象)TimeStamp

      —— 單據(jù)時間戳(用于檢查單據(jù)是否修改,空串時不檢查)domMsg

      —— 返回DOM格式的信息:主要是可用量信息 bCheck

      —— 是否進(jìn)行業(yè)務(wù)檢查(是否控制可用量)bBeforCheckStock —— 是否檢查可用量 bList —— 傳入false MakeWheres —— 傳空 sWebXml —— 傳入空串

      oGenVouchIds —— 獲取單據(jù)ID列表(返回審核時自動生成的單據(jù)的id

      列表,傳空)

      ? 棄審單據(jù)-CancelAudit方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 VoucherId

      —— 單據(jù)ID errMsg

      —— 錯誤信息 cnnFrom —— 連接對象(由調(diào)用方控制事務(wù)時必須傳入)TimeStamp

      —— 單據(jù)時間戳(用于檢查單據(jù)是否修改,空串時不檢查)domMsg

      —— 超可用量提示信息DOM對象(返回DOM格式的信息)bCheck

      —— 是否進(jìn)行業(yè)務(wù)檢查 bBeforCheckStock —— 是否檢查可用量 bList —— 傳入false

      ? 裝載單據(jù)-Load方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 sWhere —— 條件串

      DomHead

      —— 表頭DOM對象 domBody

      —— 表體DOM對象 domPos

      —— 貨位DOM對象 errMsg

      —— 錯誤信息

      bGetBlank

      —— 是否獲取空白單據(jù) sBodyWhere_Order —— 表體排序方式字段

      注意:其中sWhere設(shè)計為:

      如果按單據(jù)號加載,則語法為ccode=N'要加載的單據(jù)號',例如broker.AssignNormalValue(”sWhere“, ”ccode = N'0000000001'“);

      如果按單據(jù)ID加載,則語法為id=XXX,例如broker.AssignNormalValue(”sWhere“, ”id = 1“)。

      ? 刪除單據(jù)-Delete方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 VoucherId

      —— 單據(jù)ID errMsg

      —— 錯誤信息 cnnFrom —— 連接對象(由調(diào)用方控制事務(wù)時需要傳入連接對象)TimeStamp

      —— 單據(jù)時間戳

      domMsg —— 返回DOM格式的信息:主要是檢查可用量和控制可

      用量信息

      bCheck

      —— 是否進(jìn)行業(yè)務(wù)檢查 BeforCheckStock —— 是否檢查可用量 bList

      —— 傳入false

      ? 添加新單據(jù)-Add方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 DomHead —— 表頭DOM對象 domBody

      —— 表體DOM對象

      domPosition —— 貨位DOM對象:傳空 errMsg

      —— 返回錯誤信息 cnnFrom —— 連接對象,如果由調(diào)用方控制事務(wù),則需要設(shè)置

      此連接對象,否則傳空

      VoucherId

      —— 返回單據(jù)ID domMsg —— 返回DOM格式的信息:主要返回可用量和現(xiàn)存量的錯誤信息

      bCheck

      —— 是否進(jìn)行業(yè)務(wù)檢查(是否控制可用量)bBeforCheckStock —— 是否檢查可用量(檢查可用量)bIsRedVouch —— 是否紅字單據(jù) sAddedState —— 傳空字符串 bReMote

      —— 是否遠(yuǎn)程

      ? 修改單據(jù)-Update方法

      參數(shù):

      sVoucherType —— 單據(jù)類型:01 DomHead —— 表頭DOM對象 domBody

      —— 表體DOM對象 domPosition —— 貨位DOM對象 errMsg

      —— 錯誤信息 cnnFrom —— 連接對象

      domMsg

      —— 超可用量提示信息DOM對象(返回DOM格式的信息)bCheck

      —— 是否進(jìn)行業(yè)務(wù)檢查 bBeforCheckStock —— 是否檢查可用量 bIsRedVouch —— 是否紅字單據(jù) sAddedState —— 修改狀態(tài) bUpdateNeedEas —— 傳true ? 開發(fā)步驟

      實現(xiàn)庫存單據(jù)某一功能,主要有以下七個步驟: 1. 構(gòu)造u8login對象并登陸

      聲明和創(chuàng)建u8login類對象前應(yīng)該先引用U8API類庫中的Interop.U8Login.dll,代碼示例如下:

      U8Login.clsLogin u8Login = new U8Login.clsLogin();//聲明u8login對象 String sSubId = ”AS“;String sYear = ”2008“;String sUserID = ”demo“;String sPassword = ”“;String sDate = ”2008-09-30“;String sServer = ”localhost“;

      //登陸

      String sAccID = ”(default)@001“;String sSerial = ”“;if(!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)){

      } Console.WriteLine(”登陸失敗,原因:“ + u8Login.ShareString);Marshal.FinalReleaseComObject(u8Login);return;如果當(dāng)前環(huán)境中有l(wèi)ogin對象則可以省去第一步。2. 構(gòu)造環(huán)境上下文對象,傳入login U8EnvContext envContext = new U8EnvContext();

      envContext.U8Login = u8Login;

      //構(gòu)造環(huán)境上下文對象 //傳入login 3. 設(shè)置API地址標(biāo)識(Url)參數(shù)

      //如當(dāng)前API“新增或修改”的地址標(biāo)識為:U8API/SaleOrder/Save

      U8ApiAddress myApiAddress = new U8ApiAddress(”U8API/SaleOrder/Save“);4. 構(gòu)造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

      5. API對象參數(shù)賦值

      1)給BO表頭參數(shù)DomHead和表體參數(shù)domBody賦值有兩種方法,如下: 方法一是直接傳入MSXML2.DOMDocumentClass對象,代碼如下

      MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass();domHead.load(”domHead.xml“);broker.AssignNormalValue(”domHead“, domHead);

      方法二是構(gòu)造BusinessObject對象,具體方法如下:

      //首先通過GetBoParam方法獲取表頭表體參數(shù)

      注意:設(shè)置行數(shù)為某個值,行數(shù)并不限定為該最大值,可以一直順序添加至任意行,但有一個規(guī)則:例如當(dāng)設(shè)置為10時,可以對第0、1、??9行賦值,當(dāng)對第10行賦值時候,則會順序添加一個新行,但此時是不能對第11行賦值的,當(dāng)添加一個新行(第10行)后,又可以對第11行進(jìn)行賦值。

      /****************************** 以下是必輸字段 ****************************/ BusinessObject DomHead = broker.GetBoParam(”DomHead“);DomHead.RowCount = 10;//設(shè)置行數(shù)

      //其中,給BO對象的字段賦值,值可以是真實類型,也可以是無類型字符串 //以下代碼示例只設(shè)置第一行值。各字段定義詳見API服務(wù)接口定義

      DomHead[0][”id“] = ”“;//主關(guān)鍵字段,int類型 DomHead[0][”ccvcode“] = ”“;//盤點單號,string類型 DomHead[0][”dcvdate“] = ”“;//盤點日期,DateTime類型 DomHead[0][”dacdate“] = ”“;//賬面日期,DateTime類型

      DomHead[0][”cwhname“] = ”“;//盤點倉庫,string類型

      ??

      /***************************** 以下是非必輸字段 ****************************/ DomHead[0][”cmodifyperson“] = ”“;//修改人,string類型 DomHead[0][”dmodifydate“] = ”“;//修改日期,DateTime類型 DomHead[0][”dnmaketime“] = ”“;//制單時間,DateTime類型 DomHead[0][”dnmodifytime“] = ”“;//修改時間,DateTime類型 DomHead[0][”dnverifytime“] = ”“;//審核時間,DateTime類型

      ??

      2)給普通參數(shù)賦值

      例如,給普通參數(shù)sVouchType(參數(shù)名)賦值:

      broker.AssignNormalValue(”sVouchType“, new System.String());

      注意:所有參數(shù)名不限大小寫。

      3)給“OUT型”參數(shù)賦值

      為方便用戶使用U8API,如果參數(shù)數(shù)據(jù)類型為一般值類型,如String、Integer、Long、Single、Double、Boolean、Date,則不必傳入一個參數(shù)變量(傳入也可);否則,則必須一個參數(shù)變量。

      如: ??

      // 該參數(shù)errMsg為OUT型參數(shù),由于其數(shù)據(jù)類型為System.String,為一般值類型,因此不必傳入一個參數(shù)變量。在API調(diào)用返回時,可以通過GetResult(”errMsg“)獲取其值

      //該參數(shù)domMsg為OUT型參數(shù),由于其數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,非一般值類型,因此必須傳入一個參數(shù)變量。在API調(diào)用返回時,可以直接使用該參數(shù) MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.IXMLDOMDocument2();broker.AssignNormalValue(”domMsg“, domMsg);??

      注意:當(dāng)不傳入一個參數(shù)變量時,在API調(diào)用返回時,可以通過GetResult(參數(shù)名)獲取其值;當(dāng)不必傳入一個參數(shù)變量時,在API調(diào)用返回時,可以直接引用該參數(shù)。

      4)給“INOUT型”參數(shù)賦值

      對“INOUT型”型參數(shù),則不論是否是一般值類型,都需要傳入?yún)?shù)變量。其他與“OUT型”參數(shù)一樣。

      6. 調(diào)用API //示例調(diào)用如下: if(!broker.Invoke())

      {

      } 注意:對調(diào)用失敗,可以獲取出錯信息,如果是API框架的原因,則報告MomSysException異常,如果是業(yè)務(wù)組件的原因,則報告MomBizException異常。

      //錯誤處理

      Exception apiEx = broker.GetException();if(apiEx!= null){

      } //結(jié)束本次調(diào)用,釋放API資源 broker.Release();return;if(apiEx is MomSysException){

      } else if(apiEx is MomBizException){

      } MomBizException bizEx = apiEx as MomBizException;Console.WriteLine(”API異常:“ + bizEx.Message);//todo:異常處理 MomSysException sysEx = apiEx as MomSysException;Console.WriteLine(”系統(tǒng)異常:“ + sysEx.Message);//todo:異常處理

      7. 獲取返回結(jié)果

      1)獲取BO對象

      在“裝載單據(jù)”時,通過GetBoParam方法獲取表頭或表體參數(shù)

      BusinessObject DomHeadRet = broker.GetBoParam(”DomHead“);Console.WriteLine(”BO對象行數(shù)為:“ + DomHeadRet.RowCount);//獲取BO對象的行數(shù) 如果要取原始的XMLDOM對象結(jié)果,請使用GetResult(”DomHead“)as MSXML2.DOMDocument MSXML2.DOMDocument DomHeadRet = broker.GetResult(”DomHead“)as MSXML2.DOMDocument;以上獲取的行數(shù)是BO對象的實際行數(shù)。

      //獲取BO對象各字段的值。以下代碼示例只取第一行。字段定義詳見API服務(wù)接口定義

      /****************************** 以下是必輸字段 ****************************/ int id = Convert.ToInt32(DomHeadRet[0][”id“]);//主關(guān)鍵字段,int類型

      string ccvcode = Convert.ToString(DomHeadRet[0][”ccvcode“]);//盤點單號,string類型 DateTime dcvdate = Convert.ToDateTime(DomHeadRet[0][”dcvdate“]);//盤點日期,DateTime類型 DateTime dacdate = Convert.ToDateTime(DomHeadRet[0][”dacdate“]);//賬面日期,DateTime類型 string cwhname = Convert.ToString(DomHeadRet[0][”cwhname“]);//盤點倉庫,string類型 注意: ??

      /***************************** 以下是非必輸字段 ****************************/ string cmodifyperson = Convert.ToString(DomHeadRet[0][”cmodifyperson“]);//修改人,string類型 DateTime dmodifydate = Convert.ToDateTime(DomHeadRet[0][”dmodifydate“]);//修改日期,DateTime類型

      DateTime dnmaketime = Convert.ToDateTime(DomHeadRet[0][”dnmaketime“]);//制單時間,DateTime類型

      DateTime dnmodifytime = Convert.ToDateTime(DomHeadRet[0][”dnmodifytime“]);//修改時間,DateTime類型

      DateTime dnverifytime = Convert.ToDateTime(DomHeadRet[0][”dnverifytime“]);//審核時間,DateTime類型 ??

      2)獲取普通返回值

      代碼如下:

      //獲取普通返回值。此返回值數(shù)據(jù)類型為System.String,此參數(shù)按值傳遞,具體請參考服務(wù)接口定義 System.String result = broker.GetReturnValue()as System.String;3)獲取普通“OUT型”或“INOUT型”返回值

      如前所述,對普通“OUT型”或“INOUT型”參數(shù),如果是一般值類型,則通過GetResult方法獲取其返回值,否則直接使用該引用。

      如,//獲取普通OUT參數(shù)domPos。此返回值數(shù)據(jù)類型為MSXML2.IXMLDOMDocument2,前面已定義該參數(shù),請直接使用

      //獲取普通OUT參數(shù)errMsg。此返回值數(shù)據(jù)類型為System.String,在使用該參數(shù)之前,請判斷是否為空 System.String errMsgRet = broker.GetResult(”errMsg")as System.String;??

      第二篇:《C#項目開發(fā)》教學(xué)大綱

      《C#項目開發(fā)》教學(xué)大綱

      一、課程的性質(zhì)和任務(wù)

      1.課程的性質(zhì)和地位 本課程是高職計算機(jī)專業(yè)的一門專業(yè)課程。2.課程的任務(wù) 主要任務(wù)是介紹C#項目開發(fā)的基本方法,使學(xué)生掌握一門高級程序設(shè)計語言,能夠開發(fā)小型項目,并為后續(xù)的專業(yè)課程奠定程序設(shè)計基礎(chǔ)。

      二、課程的基本要求 1.課程總體目標(biāo) 本課程總體目標(biāo)是使學(xué)生掌握一門高級程序設(shè)計語言,熟悉C#語言的基本語法,掌握ADO.NET基本概念,熟悉項目開發(fā)的方法,能夠開發(fā)小型項目。2.知識要求(1)熟悉C#語言的基本語法。(2)熟悉C#項目開發(fā)的方法。3.能力要求 通過對本課程的理論和實踐教學(xué),應(yīng)能使本專業(yè)的學(xué)生掌握面向?qū)ο蟪绦蛟O(shè)計的理論知識和應(yīng)用技能,鍛煉學(xué)生進(jìn)行項目開發(fā)的能力。通過教學(xué)應(yīng)使學(xué)生獲得以下面的知識和能力。(1)能正確安裝和配置.NET的運行環(huán)境,能獨立完成教學(xué)基本要求規(guī)定的實驗。(2)能熟練使用軟件集成開發(fā)環(huán)境Visual Studio.NET,會使用調(diào)試工具調(diào)試應(yīng)用程序。

      (3)能開發(fā)基于C#的小型項目。4.實訓(xùn)要求 每人一臺微機(jī)系統(tǒng)、Visual Studio 2010、Access 2003數(shù)據(jù)庫管理系統(tǒng)、SQL Server 2008及以上版本數(shù)據(jù)庫管理系統(tǒng)。5.課外作業(yè)要求 要求學(xué)生課外完成,記入考核成績。6.考核要求

      學(xué)生能獨立或者以小組形式完成C#項目開發(fā)。

      三、課程內(nèi)容

      項目1 用戶登錄程序 【學(xué)習(xí)目的】、了解.NET框架及C#語言了解Visual Studio 2010的集成開發(fā)環(huán)境的安裝、掌握Visual Studio 2010的集成開發(fā)環(huán)境的基本使用、掌握Windows窗體應(yīng)用程序的創(chuàng)建步驟、掌握窗體、標(biāo)簽、文本框、按鈕的基本屬性、方法和事件?!窘虒W(xué)內(nèi)容】 1.Visual Studio 2010編程環(huán)境。2.Windows窗體應(yīng)用程序設(shè)計流程。3.窗體和基本控件的使用。4.設(shè)計用戶登錄程序。項目2 四則運算計算器 【學(xué)習(xí)目的】 掌握變量的使用方法、熟悉Visual C#語言的數(shù)據(jù)類型、掌握運算符和表達(dá)式的使用方法、。掌握流程控制語句使用方法、掌握方法的使用方法【教學(xué)內(nèi)容】 1.常量與變量。2.?dāng)?shù)據(jù)類型及轉(zhuǎn)換。3.運算符與表達(dá)式。4.條件判斷語句。5.循環(huán)控制語句。6.異常處理。7.設(shè)計簡單四則運算計算器。8.設(shè)計復(fù)雜四則運算計算器。項目3 客戶問卷調(diào)查程序 【學(xué)習(xí)目的】 掌握RadioButton控件的使用方法、掌握CheckBox控件的使用方法、掌握ListBox控件的使。用方法、掌握ComboBox控件的使用方法、掌握GroupBox 控件的使用方法【教學(xué)內(nèi)容】 1.。RadioButton控件2.。CheckBox控件3.ListBox控件。4.ComboBox控件。5.GroupBox 控件。項目4 酒店客房管理系統(tǒng)

      【學(xué)習(xí)目的】、掌握Windows窗體應(yīng)用程序的創(chuàng)建的方法掌握應(yīng)用系統(tǒng)數(shù)據(jù)庫設(shè)計方法、掌握ADO.NET。的應(yīng)用方法、掌握類的設(shè)計方法、掌握應(yīng)用系統(tǒng)的設(shè)計方法【教學(xué)內(nèi)容】 1.系統(tǒng)功能總體設(shè)計。2.建立系統(tǒng)數(shù)據(jù)庫。3.創(chuàng)建公共類DBHelper。4.系統(tǒng)詳細(xì)設(shè)計。項目5 軟件項目實訓(xùn) 【學(xué)習(xí)目的】。熟悉系統(tǒng)開發(fā)的過程、掌握系統(tǒng)開發(fā)的方法、掌握系統(tǒng)開發(fā)中的程序調(diào)試方法【教學(xué)內(nèi)容】 1.選題。2.軟件項目開發(fā)。

      四、教學(xué)方法 教-練-考緊密結(jié)合的教學(xué)方法,多媒體教學(xué)、上機(jī)實踐、課程設(shè)計、網(wǎng)上自學(xué)等方法。

      五、教學(xué)時數(shù)分配 序號 教學(xué)內(nèi)容 合計課時 講課課時 實驗課時 4 2 2 1 項目1用戶登錄程序 8 4 4 2 項目2四則運算計算器 4 2 2 3 項目3客戶問卷調(diào)查程序 32 16 16 4 項目4酒店客房管理系統(tǒng)* 16 2 14 5 項目5軟件項目實訓(xùn)* 64 26 38 合 計

      六、教材及參考書 教材: 《isual C#程序設(shè)計與軟件項目實訓(xùn)》,鄭偉 譚恒松編著,2015年1月,電子V工業(yè)出版社。(注:教育部“十二五”職業(yè)教育國家規(guī)劃教材)參考書:《C#程序設(shè)計與開發(fā)(第2版)》,譚恒松主編,2014年7月,清華大學(xué)出版社。(注:高職高專精品教材)

      七、說明

      1、根據(jù)學(xué)生的不同情況,帶*內(nèi)容:可以適當(dāng)增加課時。

      第三篇:C#項目開發(fā)實訓(xùn)總結(jié)

      C#項目開發(fā)實訓(xùn)總結(jié)

      設(shè)計人:張**

      班級和班內(nèi)序號:

      項目選題意義:

      選這個題目的原因:隨著科學(xué)技術(shù)的進(jìn)步,促進(jìn)了管理水平的提高,人力資源管理系統(tǒng)(Human Resource Management,HRMS)作為人力資源管理的一個計算機(jī)工具,可以將企業(yè)中的人員的基本信息和工資管理用數(shù)據(jù)庫統(tǒng)一管理起來,使企業(yè)內(nèi)人力資源的管理得以走向標(biāo)準(zhǔn)化、科學(xué)化、數(shù)字化和網(wǎng)絡(luò)化。發(fā)揮網(wǎng)絡(luò)效能,提高勞動生產(chǎn)率。制定人力資源管理系統(tǒng),都能勝任該崗位。職責(zé);各部門負(fù)責(zé)制定本部門人員的培訓(xùn)計劃。綜合辦公室匯總各部門的培訓(xùn)計劃后制定出檢測公司的培訓(xùn)計劃。負(fù)責(zé)組織培訓(xùn)計劃的實施和記錄,盡力檢測公司技術(shù)人員檔案并妥善保管。項目名稱:人力資源管理系統(tǒng) 自我評價:優(yōu)秀

      項目設(shè)計情況:

      項目的設(shè)計使用工具有Microsoft Visual Studio 2008和SQL Server Management StudioR2,技術(shù)有C#項目開發(fā)技術(shù)。

      系統(tǒng)管理功能、修改密碼功能、注銷用戶功能等功能。

      項目的設(shè)計已完成預(yù)期目標(biāo)!

      項目的優(yōu)勢和缺陷:

      優(yōu)勢:

      本項目采用C#項目開發(fā)技術(shù),C#項目開發(fā)代表的是一種前沿技術(shù)。C#項目開發(fā)建立在己取得極大成功的C#程序設(shè)計的語言基礎(chǔ)之上,采用C#項目開發(fā)規(guī)范能有效地進(jìn)

      行軟件復(fù)用,提高開發(fā)人員的效率,降低軟件的開發(fā)和維護(hù)成本,提高軟件的質(zhì)量,控制所構(gòu)建系統(tǒng)的復(fù)雜性。

      C#項目開發(fā)規(guī)范將使得C#在企業(yè)計算中的地位得到加強(qiáng),為基于C#的應(yīng)用系統(tǒng)提供了一個框架,和目前的許多系統(tǒng)和模型相比,C#項目開發(fā)具有許多優(yōu)越性。種種跡象表明,C#項目開發(fā)有可能成為系統(tǒng)設(shè)計的首要選擇。

      缺陷:

      1、現(xiàn)在提供給用戶的界面還很單調(diào),需要進(jìn)一步美化。而且系統(tǒng)現(xiàn)在提供的功能還很有限,以后隨著需要可以添加功能。添加相應(yīng)的功能組件,然后把它們發(fā)布到服務(wù)器上去。

      2、對于人力資源管理系統(tǒng)來說,還有許多的功能需要進(jìn)一步的完善,以提高該系統(tǒng)的整體效果。功能的完善還需進(jìn)一步討論。

      意見和建議:

      第四篇:C#開發(fā)機(jī)戰(zhàn)游戲?qū)嵙?xí)報告

      實習(xí)報告

      5月28至6月20日,我們網(wǎng)絡(luò)工程專業(yè)分三個地點進(jìn)行生產(chǎn)實習(xí),包括主要講c#方向的足下,講java方向的NTT data還有C++和Andorid方向的達(dá)內(nèi)。我綜合分析自身三年的學(xué)習(xí),選擇了位于西永的足下科技有限公司,進(jìn)行c#方向的實習(xí)。

      足下科技有限公司,主要從事服務(wù)外包軟件開發(fā)和與大學(xué)聯(lián)合開展實訓(xùn)工作;公司面積逾20000平方米、電腦設(shè)備1000多臺、多媒體教室30多間、專業(yè)服務(wù)器20多臺、專業(yè)圖書近萬本,致力于為社會培養(yǎng)更多、更實用、更優(yōu)秀的專業(yè)人才。

      本次實習(xí),我們的主要任務(wù)是在項目經(jīng)理的帶領(lǐng)下,先回顧編程語言及面向?qū)ο蟮幕局R點,再從簡單的打字游戲練起,一步一步,最終開發(fā)出一個具有可玩性的機(jī)戰(zhàn)游戲,并以小組為單位在公司進(jìn)行綜合展示,將自己的團(tuán)隊自己的產(chǎn)品推銷了去。

      按時間的劃分,可以將本次實習(xí)分為實習(xí)正式開始前的準(zhǔn)備階段、正式實習(xí)階段,準(zhǔn)備階段從5月28日到29日上午,這一階段先由項目經(jīng)理給我們簡要介紹了足下,讓大家對足下,對所謂的IT的職場有一定的認(rèn)識,然后進(jìn)行團(tuán)隊劃分,每個團(tuán)隊取出自己的團(tuán)隊名、團(tuán)隊口號、團(tuán)隊隊歌并確定自己團(tuán)隊在接下來近一個月的實習(xí)期間的實習(xí)目標(biāo)。讓每一個人都清楚自己的努力方向,然后嚴(yán)格要求自己,努力實現(xiàn)自己既定的目標(biāo)。所有這些準(zhǔn)備工作的就緒了,就開始了我們的正式實習(xí)。我們的團(tuán)隊取名心之力,引用毛主席當(dāng)年的同名文章《心之力》之名,里面說到:“天之力莫大于日,地之力莫大于電,人之力莫大于心。陽氣發(fā)處,金石亦透,精神一到,何事不成?”其中的精神,就是指心力,必力一到,何事不成?同時,我們來到足下,公司的總監(jiān)也一直在強(qiáng)調(diào),學(xué)習(xí)的第一條件是用心,用心了,沒有辦不成的事。所以,我們?nèi)∶闹?。我們的口號是:“發(fā)我心力,一往無前”。隊歌是改編版的《團(tuán)結(jié)就是力量》——團(tuán)結(jié)就是力量,團(tuán)結(jié)就是力量。這技術(shù)是鐵,這心力是鋼,比鐵還硬,比鋼還強(qiáng),向著飛行大戰(zhàn)開火,把一切技術(shù)難題全部滅亡。向著勝利,向著太陽,向著重理工發(fā)出萬丈光芒。

      實習(xí)正式開始后,又可根據(jù)實習(xí)內(nèi)容的不同分為三個階段。

      第一階段從5月29日下午到6月1日,這一階段主要是對編程語言基本語法及數(shù)據(jù)庫相關(guān)基礎(chǔ)的一些回顧,主要目的是為之后的項目開發(fā)作基礎(chǔ)知識的準(zhǔn)備,大部分同學(xué)都很久沒有編程了,很多基本的語法都忘記了,這個階段對某些同學(xué)可能是浪費時間,但對整體而言,確實有利于后期項目的開發(fā)。

      周末休息兩天后,開始了第二階段的任務(wù),從6月4日到6月7日,這一階段主要是對面向?qū)ο罄碚摰闹v解然后開發(fā)一個打字游戲用以充分理解面向?qū)ο缶幊?。對于面向?qū)ο?,第一個要解決的就是什么是面向?qū)ο?,將“面向?qū)ο蟆卑凑Z義劃分,可分“面向”和“對象”,什么是對象,事間的萬事萬物都是對象,一臺電腦是一個對象,一個人是對象;將一臺電腦進(jìn)一步劃分,電腦的主機(jī)、顯示器、鼠標(biāo)、鍵盤又是一個一個分別的對象。對于這些對象而言,都有一個抽象的描述,包括這樣的對象有什么樣的屬性,能完成什么要的任務(wù)等。這個抽象概念讓為們明白這是什么,但它不能等同于一個具的實際存在的事物。如我們描述人,就是一個抽象的概念,人有膚色、年齡、出身地點、國籍等屬性,人又可以發(fā)生吃、喝、睡等動作,人這個抽象概念就讓我們明白了人到底是什么,卻不指某一個具體的人,小張、小李,這樣具體的某一個人,是人這個抽象概念的具體化的一個實體?!皩ο蟆保褪切?、小李這樣的具體化的實體,用來描述某個對象的屬性、行為等就要用到用于描述這些的抽象概念?!懊嫦颉笨衫斫鉃槊鎸?、朝向,加在一起,“面向?qū)ο蟆本涂梢岳斫鉃槊鎸χ陨纤v述的“對象”一種描述事間萬事萬物的一種方式。接著,對于學(xué)習(xí)IT的我們,就要理解什么是面向?qū)ο缶幊?,通俗一點,面向?qū)ο缶幊?,就是使用以上所認(rèn)識到的面向?qū)ο蟮乃季S,用于計算機(jī)程序的開發(fā)。第一個問題所說的描述對象的那種抽象概念,在面向?qū)ο缶幊讨芯褪恰邦悺?,類可以用成員變量來描述一種對象的屬性,用方法、事件等來描述該對象的行為。類并不是一個實體,不開辟內(nèi)存空間,將類進(jìn)行實例化就形成了實體、開辟了內(nèi)存空間。解決了以上兩個問題,就要進(jìn)一步認(rèn)識面向?qū)ο缶幊蹋ㄗ兞款愋?、變量?shù)據(jù)類型、封裝、多態(tài)、繼承等,有了對前兩個問題的認(rèn)識,這些問題的掌握,我們變得更為簡單。將面向?qū)ο蟮睦碚撝缹W(xué)習(xí)后,我們在項目總監(jiān)的帶領(lǐng)下,開發(fā)了一個打字游戲,用實踐來更進(jìn)一步理解面向?qū)ο螅?月7日結(jié)束前,所有人都單獨實現(xiàn)了這個打字游戲。之后,大家回學(xué)??剂恕睹珴蓶|思想及中國特色社會主義理論體系》,等待第三個階段的開始。

      第三個階段從6月11日至6月20日,中途周末大家回校考英語四、六級。在前兩階段的基礎(chǔ)上,大家基本都能進(jìn)行面向?qū)ο缶幊痰拈_發(fā)了,接下來的任務(wù)都非常明確——機(jī)戰(zhàn)。項目總監(jiān)只花了兩個上午給大家講機(jī)戰(zhàn)的幾個核心技術(shù),其他時間就由大家自由發(fā)揮了。機(jī)戰(zhàn)的核心技術(shù)其實只有一個,GUI+,用timer控件每0.33秒刷新一次畫面,用GUI+技術(shù)在每一次刷新中重繪Form窗體中的圖形。技術(shù)掌握清楚后,更多時候靠的就是細(xì)心的設(shè)計、開發(fā)、調(diào)試及錯誤的測試及解決。相比于以前,因為來到了公司,大家都更為認(rèn)真,可能還有是開發(fā)游戲的緣故,大家都比較感興趣,所以我們?nèi)サ拿恳粋€人都認(rèn)認(rèn)真真地完成著自己的任務(wù)。

      實習(xí)階段的最后一天,大家都作好了準(zhǔn)備,等待項目的驗收,即實習(xí)過程的答辯。答辯最終是以團(tuán)隊為單位進(jìn)行,答辯只講解一份作品。我們團(tuán)隊每個人都完整實現(xiàn)了機(jī)戰(zhàn)的各項功能,當(dāng)中各有特色。我們采用的方式是將每個人作品中優(yōu)秀的部分截取出來,組何到一個項目當(dāng)中,成為全隊共同的作品進(jìn)行展示。雖然我們的作品相對于其他組,可能畫面沒那么絢麗,但憑借團(tuán)隊內(nèi)大家攜手努力,功能的大力擴(kuò)展以及答辯過程的充分發(fā)揮,我們團(tuán)隊取得了本次作品同答辯第一名的成績。

      通過本次實習(xí),對個人而言,最大的收獲莫過于對面向?qū)ο缶幊痰倪M(jìn)一步學(xué)習(xí)理解,以及實習(xí)項目開發(fā)中對于面向?qū)ο笏枷氲膽?yīng)用,讓面向?qū)ο缶幊痰乃季S在自己的腦海里扎根。以前雖然也知道面向?qū)ο?,知道面向?qū)ο缶幊蹋蠖鄶?shù)時候更理解為用面向?qū)ο缶幊陶Z言進(jìn)行程序開發(fā),只要是用到C#,用到j(luò)ava,那就叫面向?qū)ο?。也知道面向?qū)ο缶幊痰暮诵乃枷肴绶庋b、繼承、多態(tài)等,但真正開發(fā)的時候用到的很少,不管什么東西,能在一個類里寫完絕對不會多用另一個類,導(dǎo)致程序的可讀性、擴(kuò)展性都非常差。而通過本次實習(xí),項目經(jīng)理先再次講解面向?qū)ο蟮乃枷?,再在程序的開前教給大家,程序的開發(fā)過程中嚴(yán)格要求大家做到用面向?qū)ο蟮乃季S來實現(xiàn)程序的開發(fā)。通過這樣理論和實際的相互結(jié)合,大家在開發(fā)程序過程中真正學(xué)會了如何劃分功能模塊進(jìn)行封裝、如何使用繼承,如何使用多態(tài)。

      對于實習(xí)的全過程,除開編程方面的理論與實踐,最大的收獲應(yīng)該是一種體驗。這不僅僅是學(xué)習(xí)兩個字就能收獲到的。包括公司的作息習(xí)慣,工作任務(wù)的完成方法,人際關(guān)系的處理等等。總的說來,感覺公司比學(xué)校里實際多了,學(xué)校里你可以我行我素,出了問題老師會幫你想法解決,同學(xué)朋友會包容你安慰你,但在公司里不再如此,出了問題,那就會直接跟工資、職務(wù)的進(jìn)升掛勾,個人不得不謹(jǐn)小慎微。另外,還聽項目經(jīng)理助理說了一些工作中老板面前、同事面前的不同,如一個任務(wù),老板面前,正常需要五分鐘能完成的,一定要三分鐘完成,而在同事面前,能五分鐘完成的一定會邊耍邊做10分鐘完成。因為老板面前要掙表現(xiàn),以便得到賞識;同事面前沒那必要,而且自己做完了余下的時間還要幫別人處理,同樣辛苦,還不如一邊把節(jié)奏放慢點,讓自己輕松點。當(dāng)老板問到任務(wù)是否艱巨時,想方設(shè)法都要夸大一點任務(wù)的難度,讓老板知道你的辛苦,還是為了得到賞識。只有老板賞識才會有加工資,才會有職務(wù)的上升。寫下他說的這些,并不是我會按他這樣做,只是通過這些,讓我深刻地感受到職場跟學(xué)校的不同,覺得曾經(jīng)的自己太單純了。

      完成了實習(xí),有了職場的體驗,內(nèi)心有向往,但我不會立即工作。我下定決心考研,因為對于人生的領(lǐng)悟還不夠,進(jìn)入職場只會讓我變得現(xiàn)實,被里面同化,忘記自己的夢想。我有我的夢,現(xiàn)在還有猶豫,進(jìn)入研究生再深造幾年,學(xué)得越深,才會越堅定!對于實習(xí)的意見,我覺得實習(xí)的任務(wù)還是輕松了點,可能對于某些基礎(chǔ)相對不那么好的同學(xué)而言任務(wù)確實比較適中,但這對于基礎(chǔ)好的同學(xué)相當(dāng)不公平。剛進(jìn)大學(xué)時,對于計算機(jī),大家的基礎(chǔ)是相當(dāng)?shù)?,?jīng)過三年的學(xué)習(xí),有的人學(xué)得比較好,有的人學(xué)得比較差。這并不是覺得好的人比學(xué)得差的人聰明,而是學(xué)得好的人比學(xué)得不那么好的人更用心。這可能跟家庭因素,跟個人對人生的目標(biāo)有關(guān)。有的人覺得人生平平淡淡有份穩(wěn)定收入就好,有的人想要創(chuàng)造更高的人生價值。這些到現(xiàn)在,就是進(jìn)實習(xí)公司時大家的基礎(chǔ),基礎(chǔ)差的人對于計算機(jī)的迷戀肯定遠(yuǎn)不及基礎(chǔ)好的人,但學(xué)校卻硬要讓基礎(chǔ)好的人去等差的人,還是那句話,相當(dāng)不公平。實習(xí)的第一個周,說好聽點叫鞏固基礎(chǔ),說難聽點就叫浪費時間。一個周,就學(xué)for循環(huán)、學(xué)if、else,大一就該熟得不能再熟的東西大三時總共三周實習(xí)要花一個周來學(xué)。希望學(xué)校、老師能綜合考慮,讓每一個人都能有自己想要的更多的收獲。

      第五篇:C#學(xué)習(xí)心得

      集合聲明:類B可以換成任意object對象

      1、CollectionBase

      類A繼承CollectionBase類,通過CollectionBase的成員List實現(xiàn)類A的Add(類

      B)、Remove(類B)和RemoveAt(類B)方法:

      publicvoidAdd(類B newB)

      {List.Add(newB);}

      publicvoidRemove(類B newB)

      {List.Remove(newB);}

      publicvoidRemoveAt(int index)

      {List.RemoveAt(index);}

      在類A中建立索引可以按類似數(shù)組的方法訪問。

      public 類B this[int index]

      {get{return(類B)List[index];}

      set{List[index]=value;}

      }

      利用CollectionBase的成員InnerList(ArrayList對象)實現(xiàn)類A的Contains()方法:

      publicboolContains(類B newB)

      {

      returnInnerList.Contains(newB);

      }

      注意:InnerList是ArrayList類實例,其Contains方法通過調(diào)用Object.Equals確定相等性,Equals默認(rèn)實現(xiàn)僅支持引用相等。對于引用類型,相等定義為對象相等,即這些引用是否引用同一對象。對于值類型,相等定義為按位相等。

      可以在類B中重寫Object.Equals方法和GetHashCode()方法。publicoverrideboolEquals(objectobj)

      {//Check for null and compare run-time types.if(obj == null || GetType()!= obj.GetType())returnfalse;

      B b =(B)obj;

      return(比較邏輯);

      }

      publicoverrideintGetHashCode(){??}

      2、DictionaryBase

      類A繼承DictionaryBase類,通過DictionaryBase的成員

      Dictionary(IDictionary類型的接口),實現(xiàn)類A的 Add(object key,類B)和Remove(object key,類B)方法:

      publicvoidAdd(object key,類B newB)

      {Dictionary.Add(key,newB);}

      publicvoidRemove(object key,類B newB)

      {Dictionary.Remove(key,newB);}

      在類A中建立索引可以按類似數(shù)組的方法訪問。

      public 類B this[object index]

      {get{return(類B)Dictionary[index];}

      set{Dictionary[index]=value;}

      }

      利用DictionaryBase的接口成員Dictionary實現(xiàn)類A的Contains()方法: publicboolContains(object key)

      {

      returnDictionary.Contains(key);

      }

      3、迭代器

      對于繼承CollectionBase類的A,使用

      foreach(BsourceBin類A對象){}

      對于繼承DictionaryBase類的A,使用

      foreach(DictionaryEntrysourceBin類A對象){source.Value.}

      對于類迭代,使用方法GetEnumerator(),返回類型是IEnumerator;類成員迭代使用IEnumerable(),返回類型是IEnumerable;

      例如繼承DictionaryBase類的A的迭代器,public new IEnumeratorGetEnumerator()

      {foreach(object b in Dictionary.Values)

      yield return(B)b;

      }

      以后使用foreach循環(huán)時,可按照類似繼承CollectionBase類的的方式使用。

      4、淺度復(fù)制與深度復(fù)制

      淺度復(fù)制:簡單地按照成員復(fù)制對象可以通過派生于System.Object的MemberwiseClone()方法來完成,這是一個受保護(hù)的方法,但是很容易在對象上定義一個調(diào)用該方法的公共方法例如GetCopy()。這個方法的復(fù)制功能成為淺復(fù)制。淺拷貝是對引用類型拷貝地址,對值類型直接進(jìn)行拷貝,但是string類例外,因為string是readonly的,當(dāng)改變string類型的數(shù)據(jù)值時,將重新分配了內(nèi)存地址。數(shù)組、類也是淺度復(fù)制,而結(jié)構(gòu)體、數(shù)值型、枚舉是深度復(fù)制。

      深度復(fù)制:需要深度復(fù)制的類A添加ICloneable接口,實現(xiàn)該接口的Clone()方法。

      public object Clone()

      {A newA=new A();

      object []arr=new object[維度];//object 可以是數(shù)值類型,string //不能使用newA.arr=arr;因為通過數(shù)組名賦值引用同一地址,是淺度復(fù)制 arr.CopyTo(newA.arr,0);

      returnnewA;}

      假設(shè)類A中有成員對象類B實例myB,則在類B定義中也要實現(xiàn)ICloneable的Clone()方法,class B:ICloneable

      {

      public object Clone(){??}

      }

      然后在類A的Clone方法中,newA.myB=myB.Clone();

      比較

      1、is運算符

      檢查對象是否是給定類型或者是否可以轉(zhuǎn)換為給定類型,是則返回true。 is

      如果type是類類型,operand也是該類型,或繼承該類型、封箱到該類型,為true 如果type是接口類型,operand也是該類型,或?qū)崿F(xiàn)該接口的類型,為true 如果type是值類型,operand也是該類型,或拆箱到該類型,為true2、運算符重載

      public static 返回類型 operator 需重載的運算符(參數(shù)??){}

      注意不能重載賦值運算符,&&和||運算符,但可重載&和|;有些運算符需成對重載,如“<”和“>”

      3、IComparable接口

      類A實現(xiàn)IComparable接口的方法intCompareTo(objectobj)后,利用成員為類A的實例的ArrayList或Array類可以調(diào)用Sort()方法,按CompareTo(objectobj)的方法排序。

      4、IComparer接口

      類A實現(xiàn)IComparer接口的方法intCompare(objectx, objecty)后,利用ArrayList或Array類可以調(diào)用Sort(IA)方法(IComparer IA=new A()),按

      Compare(,)方法排序。注意ArrayList或Array類的實例不一定是類A。也可以在類A中定義一個公用動態(tài)接口成員IComparer ID,這樣可以直接調(diào)用Sort(ID)。另外,在Compare方法中可以調(diào)用Comparer.Default.Compare(,)方法,實現(xiàn)特定的關(guān)鍵字排序。Default是Compare類的動態(tài)實例。

      轉(zhuǎn)換

      1、隱式和顯示轉(zhuǎn)換

      在沒有繼承關(guān)系,沒有共享接口的類型之間轉(zhuǎn)換時,必須定義類型之間的隱式和顯示轉(zhuǎn)換。public classA

      {??

      //定義A到B的隱式轉(zhuǎn)換

      public staticimplicit operatorzhuanB(Aa){?? return }

      }

      public classB

      {??

      //定義B到A的顯式轉(zhuǎn)換

      public staticexplicit operatorzhuanA(Bb){??return }

      }

      2、as運算符

      把類型轉(zhuǎn)換為給定類型。

      is

      operand類型是type類型,或可以隱式轉(zhuǎn)換為type類型,或封箱到type類型 如果不能轉(zhuǎn)換,則表達(dá)式的結(jié)果是null

      異常處理

      Exception:所有異常對象的基類。

      SystemException:運行時產(chǎn)生的所有錯誤的基類。

      IndexOutOfRangeException:當(dāng)一個數(shù)組的下標(biāo)超出范圍時運行時引發(fā)。NullReferenceException:當(dāng)一個空對象被引用時運行時引發(fā)。

      InvalidOperationException:當(dāng)對方法的調(diào)用對對象的當(dāng)前狀態(tài)無效時,由某些方法引發(fā)。

      ArgumentException:所有參數(shù)異常的基類。

      ArgumentNullException:在參數(shù)為空(不允許)的情況下,由方法引發(fā)。ArgumentOutOfRangeException:當(dāng)參數(shù)不在一個給定范圍之內(nèi)時,由方法引發(fā)。

      InteropException:目標(biāo)在或發(fā)生在CLR外面環(huán)境中的異常的基類。ComException:包含COM類的HRESULT信息的異常。

      SEHException:封裝Win32結(jié)構(gòu)異常處理信息的異常。

      SqlException:封裝了SQL操作異常。

      常見具體的異常對象:

      ArgumentNullException一個空參數(shù)傳遞給方法,該方法不能接受該參數(shù)ArgumentOutOfRangeException參數(shù)值超出范圍

      ArithmeticException出現(xiàn)算術(shù)上溢或者下溢

      ArrayTypeMismatchException試圖在數(shù)組中存儲錯誤類型的對象

      BadImageFormatException圖形的格式錯誤

      DivideByZeroException除零異常

      DllNotFoundException找不到引用的DLL

      FormatException參數(shù)格式錯誤

      IndexOutOfRangeException數(shù)組索引超出范圍

      InvalidCastException使用無效的類

      InvalidOperationException方法的調(diào)用時間錯誤

      NotSupportedException調(diào)用的方法在類中沒有實現(xiàn)

      NullReferenceException試圖使用一個未分配的引用OutOfMemoryException內(nèi)存空間不夠

      StackOverflowException堆棧溢出

      下載U8API開發(fā)手冊(C#版)word格式文檔
      下載U8API開發(fā)手冊(C#版).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        C#總結(jié)

        引用類型是類型安全的指針,它們的內(nèi)存是分配在堆(保存指針地址)上的。 String、數(shù)組、類、接口和委托都是引用類型。 強(qiáng)制類型轉(zhuǎn)換與as類型轉(zhuǎn)換的區(qū)別:當(dāng)類型轉(zhuǎn)換非法時,強(qiáng)制類型......

        c#讀書筆記

        1、.NET平臺包括.NET框架和.NET開發(fā)工具等組成部分。.NET框架是整個開發(fā)平臺的基礎(chǔ),包括公共語言運行庫和.NET類庫。.NET開發(fā)工具包括Visual Studio.NET集成開發(fā)環(huán)境和.NET編......

        明珠漆小區(qū)開發(fā)手冊

        “明珠漆”小區(qū)開發(fā)手冊 前言 一、 制定該手冊目的 統(tǒng)一管理、銷售模式,統(tǒng)一運作,統(tǒng)一形象,樹品牌,乘快車,進(jìn)入江西品牌前三位。 二、 使用指導(dǎo): 1、 2、 3、 保密。部門負(fù)......

        U8API開發(fā)手冊(VB版)

        U8API開發(fā)手冊 作者:商平鋒 版權(quán)所有:用友軟件股份有限公司 1.簡介 U8API是為U8客戶化應(yīng)用開發(fā)提供的一套標(biāo)準(zhǔn)化的U8ERP業(yè)務(wù)編程接口。是U8UAP二次開發(fā)體系的重要組成部分。它......

        屈臣氏化妝品連鎖開發(fā)手冊范文大全

        屈臣氏化妝品連鎖 開發(fā)手冊 前言 大家都知道,零售企業(yè)在價值鏈中的核心因素是地點,經(jīng)營者能否成功很大程度上取決于店鋪店址的選擇。在店址選定后,就會有大筆資金投入分店開發(fā)......

        開發(fā)經(jīng)銷商標(biāo)準(zhǔn)作業(yè)手冊(范文大全)

        開發(fā)經(jīng)銷商標(biāo)準(zhǔn)作業(yè)手冊 (轉(zhuǎn)) 開發(fā)經(jīng)銷商標(biāo)準(zhǔn)作業(yè)手冊明確目標(biāo)認(rèn)清自己產(chǎn)品的定位;分析產(chǎn)品的主要消費群在哪里、次要消費群在哪里、以及這些消費群的主要消費場所在哪里、次要......

        C#作業(yè)參考答案

        語句while(x>10 && x......

        C#課程設(shè)計報告書

        :課程設(shè)計報告書 面向?qū)ο蠓椒▽W(xué) 課 程 設(shè) 計 報 告 設(shè)計題目:學(xué)生信息管理系統(tǒng)課程 班 級:13軟件工程1班 學(xué) 號:20130*** 姓 名:何** 指導(dǎo)教師:莊**老師 設(shè)計時間:2014年12月 1 附......