亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

關(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)用實例介紹 Type.GetMethod 方法的實際應(yīng)用。

GetMethod 方法應(yīng)用

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

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

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

應(yīng)用舉例

類設(shè)計

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

序號成員類型說明
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)的方法

運行的基本流程如下圖:

用戶通過訪問API地址,攜帶getType參數(shù),參數(shù)值跟方法名稱,后臺 init() 方法通過 HttpContext.Current進行請求處理,執(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\":\"暫時不能提供服務(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í)行實例操作。

小結(jié)

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

相關(guān)文章

  • C#?中?List?與?List?多層嵌套不改變原值的實現(xiàn)方法(深度復(fù)制)

    C#?中?List?與?List?多層嵌套不改變原值的實現(xiàn)方法(深度復(fù)制)

    這篇文章主要介紹了C#?中?List?與?List?多層嵌套不改變原值的實現(xiàn)方法,使用?BinaryFormatter?將原始?List?序列化為字節(jié)流,然后再反序列化得到新的?List,實現(xiàn)了深度復(fù)制,需要的朋友可以參考下
    2024-03-03
  • C#使用Thrift作為RPC框架入門詳細(xì)教程

    C#使用Thrift作為RPC框架入門詳細(xì)教程

    這篇文件我們講了從0到1使用thrift框架的方法,也講了一些該框架的基本知識,本文將詳細(xì)介紹 Thrift 在C#語言下的使用方式,并且提供豐富的實例代碼加以解釋說明,幫助使用者快速構(gòu)建服務(wù),感興趣的朋友一起看看吧
    2021-11-11
  • C#自定義日志記錄

    C#自定義日志記錄

    這篇文章主要為大家詳細(xì)介紹了C#自定義日志記錄的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 實例詳解C#實現(xiàn)http不同方法的請求

    實例詳解C#實現(xiàn)http不同方法的請求

    本篇文章給大家分享了C#實現(xiàn)http不同方法的請求的相關(guān)知識點以及實例代碼,有需要的朋友參考下。
    2018-07-07
  • C#詞法分析器之構(gòu)造NFA詳解

    C#詞法分析器之構(gòu)造NFA詳解

    本篇文章介紹了,C#詞法分析器之構(gòu)造NFA詳解。需要的朋友參考下
    2013-05-05
  • 在C#中使用指針的示例代碼

    在C#中使用指針的示例代碼

    C#向開發(fā)人員隱藏了大部分基本內(nèi)存管理操作,因為它使用了垃圾回收器和引用,但是,有時候我們也需要直接訪問內(nèi)存,例如:進行平臺調(diào)用,性能優(yōu)化等等,本文給大家介紹了在C#中使用指針的示例代碼,需要的朋友可以參考下
    2024-10-10
  • C#使用游標(biāo)實現(xiàn)補間函數(shù)

    C#使用游標(biāo)實現(xiàn)補間函數(shù)

    這篇文章主要為大家詳細(xì)介紹了C#使用游標(biāo)實現(xiàn)補間函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解C#編程中異常的創(chuàng)建和引發(fā)以及異常處理

    詳解C#編程中異常的創(chuàng)建和引發(fā)以及異常處理

    這篇文章主要介紹了C#編程中異常的創(chuàng)建和引發(fā)以及異常處理,文中介紹了Catch塊和Finally塊等基本的異常處理要點,需要的朋友可以參考下
    2016-02-02
  • C#二維數(shù)組與多維數(shù)組的具體使用

    C#二維數(shù)組與多維數(shù)組的具體使用

    本文主要介紹了C#二維數(shù)組與多維數(shù)組的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • c# Task任務(wù)的取消方式

    c# Task任務(wù)的取消方式

    文章介紹了如何在C#中使用CancellationTokenSource和CancellationToken來取消任務(wù),通過Task.Run方法和CancellationToken參數(shù),可以控制任務(wù)的執(zhí)行,并在需要時取消它們,文章還討論了CancellationToken參數(shù)的重要性
    2024-12-12

最新評論