OperateResult 基礎類及派生類介紹


前言


在Visual Studio 中的NuGet管理器中可以下載安裝,也可以直接在NuGet控制台輸入下面的指令安裝:

Install-Package HslCommunication

NuGet安裝教程  http://www.cnblogs.com/dathlin/p/7705014.html

聯系作者及加群方式(激活碼在群里發放):http://www.hslcommunication.cn/Cooperation

概述


通常我們執行一個方法的時候,方法會實現一堆復雜的功能,我們需要知道是否操作成功,如果操作失敗,失敗結果又是什么,失敗代號又是什么。

除了上面的場景外,我們可能還會返回一個自己需要的結果值,比如一個額外的string對象,Bitmap對象,甚至是自定義的對象,使用本工具的類可以輕松實現,提供了從1一個自定義對象到10個自定義對象的派生類,以滿足您日常的絕大多使用情況。

 

舉例


此處定義了一個方法,傳入文件路徑,輸出文件內容,事實上這個方法是很容易出現異常的,由於文件不存在,文件被占用,文件路徑太長等等,如下的方法就可以相對優雅的讀取內容:

        /// <summary>
        /// 輸入一個文件名,輸出文件名的內容
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private HslCommunication.OperateResult<string> GetInformation(string fileName)
        {
            HslCommunication.OperateResult<string> result = new HslCommunication.OperateResult<string>();

            try
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader(fileName, Encoding.UTF8))
                {
                    result.Content = sr.ReadToEnd();
                    result.IsSuccess = true;
                }
            }
            catch(Exception ex)
            {
                result.Message = ex.Message;
            }

            return result;
        }

至於調用它,也是非常的方便:

        private void userButton10_Click(object sender, EventArgs e)
        {
            HslCommunication.OperateResult<string> result = GetInformation("D:\\123.txt");
            if(result.IsSuccess)
            {
                MessageBox.Show(result.Content);
            }
            else
            {
                MessageBox.Show("讀取失敗:" + result.Message);
            }
        }

 

下面就貼出這個類及派生類的源代碼,方便大家使用及學習:

    /// <summary>
    /// 操作結果的類,只帶有成功標志和錯誤信息
    /// </summary>
    public class OperateResult
    {
        /// <summary>
        /// 指示本次訪問是否成功
        /// </summary>
        public bool IsSuccess { get; set; }


        /// <summary>
        /// 具體的錯誤描述
        /// </summary>
        public string Message { get; set; } = StringResources.UnknownError;


        /// <summary>
        /// 具體的錯誤代碼
        /// </summary>
        public int ErrorCode { get; set; } = 10000;

        /// <summary>
        /// 允許用戶自己使用的一個額外的int數據,可以根據自身的需求進行擴充
        /// </summary>
        public int CustomerCode { get; set; } = 0;


        /// <summary>
        /// 消息附帶的額外信息
        /// </summary>
        public object Tag { get; set; }


        /// <summary>
        /// 獲取錯誤代號及文本描述
        /// </summary>
        /// <returns></returns>
        public string ToMessageShowString()
        {
            return $"{StringResources.ErrorCode}:{ErrorCode}{Environment.NewLine}{StringResources.TextDescription}:{Message}";
        }


    }

    /// <summary>
    /// 操作結果的泛型類,允許帶一個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T">泛型類</typeparam>
    public class OperateResult<T> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據
        /// </summary>
        public T Content { get; set; }
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶兩個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    public class OperateResult<T1, T2> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶三個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    public class OperateResult<T1, T2, T3> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }
    }


    /// <summary>
    /// 操作結果的泛型類,允許帶四個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }
    }


    /// <summary>
    /// 操作結果的泛型類,允許帶五個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶六個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    /// <typeparam name="T6">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5, T6> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T6 Content6 { get; set; }
        
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶七個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    /// <typeparam name="T6">泛型類</typeparam>
    /// <typeparam name="T7">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5, T6, T7> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據6
        /// </summary>
        public T6 Content6 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據7
        /// </summary>
        public T7 Content7 { get; set; }


    }

    /// <summary>
    /// 操作結果的泛型類,允許帶八個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    /// <typeparam name="T6">泛型類</typeparam>
    /// <typeparam name="T7">泛型類</typeparam>
    /// <typeparam name="T8">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5, T6, T7, T8> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據6
        /// </summary>
        public T6 Content6 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據7
        /// </summary>
        public T7 Content7 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據8
        /// </summary>
        public T8 Content8 { get; set; }
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶九個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    /// <typeparam name="T6">泛型類</typeparam>
    /// <typeparam name="T7">泛型類</typeparam>
    /// <typeparam name="T8">泛型類</typeparam>
    /// <typeparam name="T9">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5, T6, T7, T8, T9> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據6
        /// </summary>
        public T6 Content6 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據7
        /// </summary>
        public T7 Content7 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據8
        /// </summary>
        public T8 Content8 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據9
        /// </summary>
        public T9 Content9 { get; set; }
    }

    /// <summary>
    /// 操作結果的泛型類,允許帶十個用戶自定義的泛型對象,推薦使用這個類
    /// </summary>
    /// <typeparam name="T1">泛型類</typeparam>
    /// <typeparam name="T2">泛型類</typeparam>
    /// <typeparam name="T3">泛型類</typeparam>
    /// <typeparam name="T4">泛型類</typeparam>
    /// <typeparam name="T5">泛型類</typeparam>
    /// <typeparam name="T6">泛型類</typeparam>
    /// <typeparam name="T7">泛型類</typeparam>
    /// <typeparam name="T8">泛型類</typeparam>
    /// <typeparam name="T9">泛型類</typeparam>
    /// <typeparam name="T10">泛型類</typeparam>
    public class OperateResult<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : OperateResult
    {
        /// <summary>
        /// 用戶自定義的泛型數據1
        /// </summary>
        public T1 Content1 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據2
        /// </summary>
        public T2 Content2 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據3
        /// </summary>
        public T3 Content3 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據4
        /// </summary>
        public T4 Content4 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據5
        /// </summary>
        public T5 Content5 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據6
        /// </summary>
        public T6 Content6 { get; set; }
        
        /// <summary>
        /// 用戶自定義的泛型數據7
        /// </summary>
        public T7 Content7 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據8
        /// </summary>
        public T8 Content8 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據9
        /// </summary>
        public T9 Content9 { get; set; }

        /// <summary>
        /// 用戶自定義的泛型數據10
        /// </summary>
        public T10 Content10 { get; set; }
    }

 


免責聲明!

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



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