C# 从未知数据模型获取数据

C# 从未知数据模型获取数据,c#,templates,C#,Templates,好的,我想要一个通用方法,它可以从给定razor类型属性指针的未知数据类中读取数据 也就是说,我希望能够传入一个包含模板和对象的字符串,然后从模板中给定字符串的对象中提取数据 String template = "@Model.Basket"; var results = parse(template, data); 解析方法应该不知道传递给它的特定模型,因此它的方法签名应该类似于: public var parse(String template, object model) 其中数据类似

好的,我想要一个通用方法,它可以从给定razor类型属性指针的未知数据类中读取数据

也就是说,我希望能够传入一个包含模板和对象的字符串,然后从模板中给定字符串的对象中提取数据

String template = "@Model.Basket";
var results = parse(template, data);
解析方法应该不知道传递给它的特定模型,因此它的方法签名应该类似于:

public var parse(String template, object model)
其中数据类似于

public class Receipt
{
    public String Firstname { get; set; }
    public String Surname { get; set; }
    public DateTime TransactionDateTime { get; set; }
    public Boolean ReturnCustomer { get; set; }
    public LineItem[] Basket { get; set; }


    public class LineItem
    {
        public Product product { get; set; }
        public int Units { get; set; }

        public class Product
        {
            public int ProductId { get; set; }
            public String ProductName { get; set; }
            public double Cost { get; set; }
        }
    }
}
在这种情况下,parse应该返回一个行项目数组,但是如果我的模板等于“@Model.Firstname”,它应该只返回一个包含存储在该属性中的名称的字符串

有人有什么好主意吗


请注意,对于这个给定的解决方案,我不能使用Razor引擎,因为我的模板的格式不是Razor引擎可以理解的格式。

如果要这样做,您需要查看
System.Reflection
命名空间,尤其是PropertyInfo。不过,我不确定这是否是个好主意。

我在想,反思可能是唯一的办法。为什么你认为这不是一个好主意呢?如果不了解你的问题领域,我不能肯定这不是一个好主意,但它似乎有可能变得复杂和无法维护。也许调查T4模板可能会找到一个更易于管理的解决方案?我看过T4模板,但它们不起作用,因为当您在VS中创建模板时,它实际上会创建cs代码隐藏文件,所以模板是由VS预先编码的。在我的项目中,我需要用户能够在任何应用程序中生成模板,然后我希望在运行时解释和填充这些模板。啊。好啊您是否尝试过将模板保存到给定文件夹,然后将该文件夹添加到RazorViewEngine.ViewLocationFormats?(这只是一个想法——我还没有尝试过)