C# 委托的用法


   委托可以用delegate,Action和Func 實現。此處只記錄Action和Func的用法。

    /// <summary>
    /// 備注:第一;委托只在邏輯層使用,委托提供異步方法,所以歸為異步文件夾
    ///      第二: 此只提供了參數有個的泛型方法;可擴展,注意,func和adcion對參數有限制,最多16個
    ///      第三:此處要做單例模式處理,並保證線程安全(不用內存處理數據,則不用)
    ///      第四:返回對象jsonMessage 只是臨時返回的對象,后期可能要更改為RequestParamePage對象。 此處需要將所有的接口的請求格式和返回格式統一,請求格式統一 難度比較大,盡量實現;返回格式比較好實現。 
    /// </summary>
    public class EntrustHelper
    {
        /// <summary>
        /// 功能:一個 返回JsonMessage 對象的泛型委托,參數只有一個 T
        /// 用法: EntrustFunc<string>(new Func<sring ,JsonMessage>(FunName),"123");   funName 方法名稱
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="funcA"></param>
        /// <param name="s"></param>
        /// <returns></returns>
        public JsonMessage EntrustFunc<T>(Func<T, JsonMessage> funcA, T s)
        {
            JsonMessage jsonMessage = new JsonMessage();
            //異步用法
            IAsyncResult result = funcA.BeginInvoke(s, null, null); //開始異步執行
            jsonMessage = funcA.EndInvoke(result);//等待異步執行的結果
            return funcA(s);
        }

        /// <summary>
        /// 功能:參數只有一個  的泛型委托,無返回值
        /// 使用:Entrustction<string>(new Action<sring> actionName,"456");   actionName 方法名稱
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="actionA"></param>
        /// <param name="s"></param>
        public void Entrustction<T>(Action<T> actionA, T s)
        {
            //異步用法
            IAsyncResult result = actionA.BeginInvoke(s, null, null); //開始異步執行
            actionA.EndInvoke(result);//等待異步執行的結果


            actionA(s);


        }

    }

個人記錄,如有錯誤,歡迎指出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM