在.NET中使用路径字符串的反射

Phi*_*own 5 .net reflection

有没有办法在.net中使用反射来使用类似的路径获取属性的值...

type t {
    id : int
    name : string
}

type s {
    id : int
    st : t
{

let a = {id = 1; {id = 2; name = "foo"}}

a.getType().getProperty("st.name")
Run Code Online (Sandbox Code Playgroud)

抱歉F#.这显然不起作用,但它说明了我正在尝试做的事情.我可以为此编写一个递归算法,但是有没有人知道API中的一个机制来完成这个?

Tim*_*oyd 0

您可以使用 DataBinder.Eval 动态计算路径表达式(尽管这意味着添加对 System.Web 的依赖项):

http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx

C# 示例:

using System;
using System.Web.UI;

namespace DataBinderEval
{
    internal class Program
    {
        private static void Main()
        {
            object target = new s { id = 1, st = new t { id = 2, name = "foo" } };

            string expression = "st.name";

            object result = DataBinder.Eval(target, expression);

            Console.WriteLine(result);
        }

        private class t
        {
            public int id { get; set; }
            public string name { get; set; }
        }

        private class s
        {
            public int id { get; set; }
            public t st { get; set; }
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)