簡體   English   中英

從 app.config 讀取數據類型值

[英]Reading datatype value from app.config

我有一個通用方法 SampleMethod(param1, param2) ,我需要根據配置值調用該方法。 例如:

SampleMethod<long>(param1, param2);
SampleMethod<Guid>(param1, param2);

在方法調用中,類型應該更改配置值。 我需要從 app.config 文件等配置文件中獲取值。

public static Type RangeType
{
    get
    {
        Type rangeType;
        string rangeDataTypeString = ConfigurationManager.AppSettings["ShardRangeType"];

        switch (rangeDataTypeString.ToUpper())
        {
            case "LONG":
                rangeType = typeof (long);
                break;

            case "GUID":
                rangeType = typeof (Guid);
                break;

            default:
                rangeType = typeof (long);
                break;
        }

        return rangeType;
    }
}

當我嘗試根據配置值調用它並將此值傳遞給上述方法時,例如:

Type rangeType = Configuration.RangeType;
SampleMethod<rangeType>(param1, param2);

上面語句中的 rangeType 不能識別為類型,有人可以建議如何實現這一點。 提前致謝!

如果“SampleMethod”方法存在於您想要調用它的同一個類中:

this.GetType().GetGenericMethod("SampleMethod",rangeType).Invoke(null,param1, param2);

編譯泛型方法調用的類型參數。 您不能將變量放入其中。 如果要將 Type 作為參數傳遞給方法,請將其作為參數添加到方法中。

如果您知道自己的類型參數集非常有限,則可以創建一組條件調用(例如,使用 switch)。

否則,您可以使用反射來構造適當的泛型方法並調用它(如 Reza 的回答所示)。

如果不確切知道您正在使用 SampleMethod 做什么,就不可能提出其他關於如何做的替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM