您可以使用反射来做到这一点,但它会很慢。这是一个演示主体的小程序(您可以编译并运行它):
using System;
using System.Collections.Generic;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
var log = new XmlLog();
var values = new Dictionary<string, string> { { "Hello", "1" }, { "World", "2" } };
foreach (var methodInfo in typeof(XmlLog).GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
methodInfo.SetValue(log, values[methodInfo.Name]);
}
Console.WriteLine(log.Hello);
Console.WriteLine(log.World);
}
class XmlLog
{
public string Hello { get; set; }
public string World { get; set; }
}
}
这可以通过使用代码生成更快地完成。您有几种选择,例如:
- 在 XmlLog 类型上使用反射并生成将与您的应用程序一起编译的 C# 代码。
- 使用 Reflection 构建一个设置 XmlLog 属性的 Expression,然后在运行时将其编译为 Func 或 Action。