[英]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.