最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# GetMethod方法的應(yīng)用實(shí)例講解

 更新時(shí)間:2024年04月26日 09:42:01   作者:初九之潛龍勿用  
GetMethod 是獲取當(dāng)前 Type 的特定方法,具有多個(gè)重載, GetMethod 即使用指定的綁定約束搜索指定方法,本文給大家介紹了C# GetMethod方法的應(yīng)用實(shí)例,需要的朋友可以參考下

關(guān)于 C# Type 類

Type表示類型聲明:類類型、接口類型、數(shù)組類型、值類型、枚舉類型、類型參數(shù)、泛型類型定義,以及開放或封閉構(gòu)造的泛型類型。調(diào)用 this.GetType() 方法得到Type對象,可獲取成員信息,如方法名、變量名。更多學(xué)習(xí)請參照以下鏈接:

https://learn.microsoft.com

本文以 API 模擬調(diào)用類應(yīng)用實(shí)例介紹 Type.GetMethod 方法的實(shí)際應(yīng)用。

GetMethod 方法應(yīng)用

GetMethod 是獲取當(dāng)前 Type 的特定方法,具有多個(gè)重載,我們在這里介紹 GetMethod (string name, System.Reflection.BindingFlags bindingAttr)  即使用指定的綁定約束搜索指定方法。

其中 string name 表示要搜索的方法名稱,System.Reflection.BindingFlags 枚舉可見下表:

序號篩選器標(biāo)志說明
1BindingFlags.Instance 或 BindingFlags.Static 必須指定實(shí)例或靜態(tài)方可有效返回
2BindingFlags.Public搜索當(dāng)前 Type 中包含的公共方法
3BindingFlags.NonPublic搜索當(dāng)前 Type 中包含的非公共方法 、私有方法、內(nèi)部方法和保護(hù)方法
4BindingFlags.FlattenHierarchy在層次結(jié)構(gòu)中的包括 public 和 protected 靜態(tài)成員; private 繼承類中的靜態(tài)成員不包括在層次結(jié)構(gòu)中
5BindingFlags.IgnoreCase忽略方法name的大小寫進(jìn)行搜索
6BindingFlags.DeclaredOnly如果只搜索 Type 聲明的方法,則搜索只是繼承的方法

應(yīng)用舉例

類設(shè)計(jì)

創(chuàng)建一個(gè) CCAPI 類處理數(shù)據(jù)回應(yīng),該類設(shè)計(jì)如下:

序號成員類型說明
1HttpContext httpc = HttpContext.Current;屬性System.Web.HttpContext,相當(dāng)于被包裝組合的網(wǎng)絡(luò)請求,我們可以通過 HttpContext 訪問諸如網(wǎng)絡(luò)傳遞GET或POST提交的數(shù)據(jù)、文件等等
2void init()方法處理請求,執(zhí)行對應(yīng)的接口功能并返回Json結(jié)果
3string RunGetTypeMethod(string methodName, object[] paras)方法GetMethod 方法的應(yīng)用,根據(jù)請求動作執(zhí)行對應(yīng)的方法

運(yùn)行的基本流程如下圖:

用戶通過訪問API地址,攜帶getType參數(shù),參數(shù)值跟方法名稱,后臺 init() 方法通過 HttpContext.Current進(jìn)行請求處理,執(zhí)行 RunGetTypeMethod("methodA", null) 方法,查找 API 列表庫中對應(yīng)的方法名稱 "methodA" ,并執(zhí)行 string methodA() 方法,該方法返回 Json 處理結(jié)果。

類代碼

示例代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Data;
using System.Web.SessionState;
using System.Collections;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
namespace CCAPI
{
    public class CCAPI
    {
        public HttpContext httpc = HttpContext.Current;
        
        public CCAPI()
        {
        }
        public void init()
        {
            string getType = httpc.Request["getType"];
            if (getType == null)
            {
                httpc.Response.Write("{\"errcode\":2,\"errmsg\":\"暫時(shí)不能提供服務(wù),未提供合法getType值。\"}");
                httpc.Response.End();
                return;
            }
            string resultJson = "";
            resultJson = RunGetTypeMethod(getType, null);
            httpc.Response.Write(resultJson);
       }
       string methodA()
        {
            string result = "{\"errcode\":{0},\"errmsg\":\"methodA\"}";
            return result;
        }
       string methodB()
        {
            string result = "{\"errcode\":{0},\"errmsg\":\"methodB\"}";
            return result;
        }
       string methodC()
        {
            string result = "{\"errcode\":{0},\"errmsg\":\"methodC\"}";
            return result;
        }
        public string RunGetTypeMethod(string methodName, object[] paras)
        {
            string result = "";
            Type pageType = this.GetType();
            MethodInfo mInfo = pageType.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
            if (mInfo != null)
            {
                result = "{\"errcode\":2,\"errmsg\":\"方法存在,但無法返回任何值。\"}";
                object user_rv = mInfo.Invoke(this, paras);
                if (mInfo.ReturnType != typeof(void))
                    if (user_rv.GetType() == typeof(string)) result = (string)user_rv;
            }
            else
            {
                result = "{\"errcode\":2,\"errmsg\":\"getType不是合法的API訪問功能值\"}";
            }
            return result;
        }
 
    }
}

RunGetTypeMethod 核心方法其參數(shù)說明如下:

序號參數(shù)類型說明
1methodNamestring要查找的字符串方法名稱
2object[] parasobject[]可傳遞方法要使用的參數(shù)列表,本應(yīng)用里傳遞了 null 值。

其調(diào)用結(jié)構(gòu)如下圖:

調(diào)用 GetMethod 得到 MethodInfo 對象,然后 MethodInfo 再執(zhí)行 Invoke 方法執(zhí)行實(shí)例操作。

小結(jié)

到此這篇關(guān)于C# GetMethod方法的應(yīng)用實(shí)例講解的文章就介紹到這了,更多相關(guān)C# GetMethod方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中+=是什么意思及+=的用法

    C#中+=是什么意思及+=的用法

    這篇文章主要介紹了C#中+=是什么意思及+=的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C#開發(fā)Winform控件之打開文件對話框OpenFileDialog類

    C#開發(fā)Winform控件之打開文件對話框OpenFileDialog類

    這篇文章介紹了C#開發(fā)Winform控件之打開文件對話框OpenFileDialog類,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C# 使用BitBlt進(jìn)行窗口抓圖的示例

    C# 使用BitBlt進(jìn)行窗口抓圖的示例

    這篇文章主要介紹了C# 使用BitBlt進(jìn)行窗口抓圖的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C# #define條件編譯詳解

    C# #define條件編譯詳解

    這篇文章主要介紹了C# #define條件編譯,告訴大家#define是用來做什么?如何使用#define,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • C# 中Func 的用法小結(jié)

    C# 中Func 的用法小結(jié)

    本文主要介紹了C#中Func的用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • C#使用FolderBrowserDialog類實(shí)現(xiàn)選擇打開文件夾方法詳解

    C#使用FolderBrowserDialog類實(shí)現(xiàn)選擇打開文件夾方法詳解

    這篇文章主要介紹了C#選擇文件夾/打開文件夾/瀏覽文件夾等代碼方法,大家參考使用
    2013-11-11
  • C#中l(wèi)ock用法詳解

    C#中l(wèi)ock用法詳解

    這篇文章主要介紹了C#中l(wèi)ock用法,以實(shí)例形式詳細(xì)分析了lock語句的用法及用途,需要的朋友可以參考下
    2014-11-11
  • C#將圖片存放到SQL SERVER數(shù)據(jù)庫中的方法

    C#將圖片存放到SQL SERVER數(shù)據(jù)庫中的方法

    這篇文章主要介紹了C#將圖片存放到SQL SERVER數(shù)據(jù)庫中的方法,以實(shí)例形式較為詳細(xì)的分析了C#保存圖片到SQL Server數(shù)據(jù)庫的具體步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • c# 如何用組合替代繼承

    c# 如何用組合替代繼承

    這篇文章主要介紹了c# 如何用組合替代繼承,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 基于WPF實(shí)現(xiàn)ListBox拖動子項(xiàng)

    基于WPF實(shí)現(xiàn)ListBox拖動子項(xiàng)

    這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)ListBox拖動子項(xiàng)效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-04-04

最新評論

田林县| 宜阳县| 普安县| 嫩江县| 岳西县| 河池市| 沂源县| 陵川县| 镇康县| 深圳市| 喀喇| 泰顺县| 碌曲县| 韩城市| 会昌县| 深州市| 固镇县| 衡南县| 丹巴县| 塘沽区| 泾川县| 云龙县| 汾西县| 于都县| 汝阳县| 武鸣县| 镶黄旗| 安吉县| 二连浩特市| 桐梓县| 柳江县| 绩溪县| 黄大仙区| 沁水县| 长顺县| 汨罗市| 扎赉特旗| 射阳县| 红河县| 鲜城| 屯昌县|