所以我在Oracle表中有一个单元格,它的值将是一些系统函数或一些静态属性,如DateTime.Now.Year
。
在表单元格的类型是VARCHAR2
在.Net
它的字符串。
如何为每种情况(属性,静态函数)生成泛型代码以获取字符串
中的值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);