我想dynamic用字符串访问c#属性的值:
dynamic d = new { value1 = "some", value2 = "random", value3 = "value" };
如果我只将"value2"作为字符串,我怎样才能获得d.value2("random")的值?在javascript中,我可以使用d ["value2"]来访问值("随机"),但我不知道如何使用c#和反射来执行此操作.我最接近的是:
d.GetType().GetProperty("value2") ......但我不知道如何从中获得实际价值.
一如既往,感谢您的帮助!
我需要从.NET 4中使用dynamic关键字声明的对象中获取属性及其值的字典?似乎使用反射这是行不通的.
例:
dynamic s = new ExpandoObject();
s.Path = "/Home";
s.Name = "Home";
// How do I enumerate the Path and Name properties and get their values?
IDictionary<string, object> propertyValues = ???
Run Code Online (Sandbox Code Playgroud) 我想调用一个需要这样的参数的方法:
Expression<Func<sometype, 'a>> expr
Run Code Online (Sandbox Code Playgroud)
我需要在运行时构造这个参数,因为我不知道之前的匿名类型是什么样的; 它可以有任何数量的字段:
x => new { a=x.a, b=x.b, c=x.c, etc... }
Run Code Online (Sandbox Code Playgroud)
我可以在运行时创建一个类型具有相同的'签名'(这是正确的单词吗?)作为所需的匿名类型,但问题是:如何在运行时从那个构造这个lambda表达式?特别是Expression.New是烦我的,因为我需要传递一个构造函数信息给它,我必须从一个现有的类型(它确实可以是一个匿名类型,但我不能在运行时创建一个匿名类型.或者在那里一种方法吗?).
更新(评论中要求的一些上下文)
我想调用的方法是:
DependentNavigationPropertyConfiguration.HasForeignKey<TKey>(Expression<Func<TDependentEntityType, TKey>> foreignKeyExpression)
Run Code Online (Sandbox Code Playgroud)
我想这样做的原因是自动为从某个基类继承的实体创建一个导航属性,包括该外键中该基类的键.因为实体可以有多个任何类型的键字段,所以TKey类型只在运行时才为我所知.
c# reflection entity-framework anonymous-types expression-trees