簡體   English   中英

通過數據庫中的字符串值調用方法

[英]Call Method by string value from data base

所以我的 Oracle 表中有一個單元格,它的值將是一些系統函數或一些靜態屬性,如DateTime.Now.Year
在表格單元格中, .Net中的類型是VARCHAR2其字符串。

如何為每種情況(屬性,靜態函數)生成通用代碼以獲取字符串中的值

string str = "DateTime.Now.Year" // the value comes from DataBase
var valueFromDataBase = str.invoke();

考慮到您正在存儲類型和屬性

public class Entity
{
    public string TypeName { get; set; }
    public string PropertyName { get; set; }
}
new Entity { TypeName = typeof(DateTime).FullName ; PropertyName = nameof(DateTime.Now) }

使用反射你現在可以逆轉這個過程

public static object? GetPropertyValue(string typeName, string propertyName)
{
    var assemblies = AppDomain.CurrentDomain.GetAssemblies();
    var types = assemblies.SelectMany(a => a.GetTypes());
    
    var type = types.First(t => t.FullName == typeName);
    var property = type
        .GetProperties(BindingFlags.Public | BindingFlags.Static)
        .First(p => p.Name == propertyName);

    return property.GetValue(null);
}
var datetime = GetPropertyValue(entityFromDb.TypeName, entityFromDb.PropertyName);

暫無
暫無

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

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