是否有一个库可以基于字符串对 .Net 对象执行反射?

斯图尔特·摩尔

我正在寻找一个库,它允许您使用字符串对对象执行反射,例如

class SampleClass {
    public SampleClass Child {get; set;}
    public string SomeValue {get;set;}
}
var a = new SampleClass { Child = new SampleClass { SomeValue = "v"}};
var parser = new ReflectionParser();
var result = parser.Parse("Child.SomeValue", a);
// result is "v"

如果没有,我正在考虑编写一个并将其开源 - 但我不想重新发明轮子。最初它只会获取属性值,但从长远来看,我可以看到它获得了运行方法、根据需要解析参数的能力。

我发现的最接近的是一个 XPath 样式库https://code.google.com/archive/p/antix-software/wikis/AntixReflectionQuery.wikiUsing an XPath-style Query with Reflection and Traversing an任意 C# 对象图中引用使用 XPath/应用 XSL 转换- 但是这似乎不再可用。

Heinzi

.NET 基类库包含一个DataBinder完全符合您要求的类。

它是为 ASP.NET WebForms 数据绑定而设计的,因此它位于System.Web.UI命名空间中并且需要对System.Web. 但是不要让这阻止您,它也可以在 Web 项目之外使用。

class SampleClass
{
    public SampleClass Child { get; set; }
    public SampleClass[] Children { get; set; }
    public string SomeValue { get; set; }
}

var a = new SampleClass { Child = new SampleClass { SomeValue = "v" } };

var result = DataBinder.Eval(a, "Child.SomeValue");
Console.WriteLine(result); // yields v

DataBinder 还支持对集合进行索引,因此Children[0].SomeValue也可以正确评估:

var a = new SampleClass { Children = new SampleClass[] { new SampleClass { SomeValue = "v" } } };

var result = DataBinder.Eval(a, "Children[0].SomeValue");
Console.WriteLine(result); // yields v

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使.NET反射与动态生成的对象一起使用?

JavaScript是否具有对象文字速记,可以自动为属性分配一个值,该值是属性名称的字符串?

是否有任何速记方法可以将标头作为第一个数组的字符串数组转换为数组的对象?

webdriverjs:预期的字符串有一个对象

基于带有对象[JS / TypeScript]的另一个数组的字符串数组

VB.Net-是否可以在一个IF语句条件下检查字符串是否为IsNumeric,以及是否将其转换为要比较的数字?

是否可以将一个Json对象中的图像和字符串返回给客户端

使用反射将类中的所有静态属性作为对象获取VB.NET

javascript中是否有一个衬里使用字符串数组作为对象路径?

Swift 中基于搜索字符串的上一个/下一个对象

.Net Core是否支持反射?

是否可以使用R中类似字典的对象将一个字符串映射到另一个字符串?

将连接字符串从另一个库传递到.Net Core EF库

.Net Core从另一个控制器操作获取json结果并将json字符串转换为c#对象

当 I/O 对象已经有一个执行器时,为什么需要 `net::dispatch`?

给定一个复杂的PHP对象层次结构,我是否可以确定表示属性路径的字符串是否存在?

为什么VBA的VarType函数说这个COM对象是一个字符串?(对象是.NET的System.Object类的COM版本的实例。)这是一个错误吗?

我可以从 json 字符串创建一个 const 对象吗?

是否有一个库可以在lua中执行`setTimeout`?

是否有克隆价值有更好的方式从一个对象而不使用反射?

我正在基于字符串数组过滤数组元素,但是,我正在将字符串数组变成对象数组。我是否需要另一个循环?

检查列表是否包含字符串。包含要求一个类对象

是否可以在不影响文件权限的情况下替换属于另一个用户的可执行文件中的字符串?

带有对象分配的反射

.Net字符串对象的静态方法

是否有一个Java库可以生成Java源代码来创建对象?

从删除元素的字符串创建一个jQuery对象并返回没有删除元素的相同字符串

vb.net SQL连接字符串,仅在数据库中写入最后一个值

.NET是否为每个程序集创建一个字符串内部存储池?