将字符串与类属性匹配

时间:2013-11-07 06:26:01

标签: c#

我需要匹配FixedFormatSettings的属性。例如,我可能有字符串" BitmapUnembeddableFonts"和" UsePdaA"在一个字符串[]。如果我想循环遍历字符串[],并将我找到的任何匹配属性(作为字符串)设置为true(例如,FixedFormatSettings.UsePdaA = true),我将如何进行此操作?

1 个答案:

答案 0 :(得分:1)

使用下一个代码作为通过使用名称及其值的字典来设置属性的示例。

var valuesToSet = new Dictionary<string, object> 
                  {
                        {"BitmapUnembeddableFonts", false}, 
                        {"UsePdaA", true}
                  };

var settings = new FixedFormatSettings();

var properties = settings.GetType()
                         .GetProperties()
                         .Where(p => p.CanWrite);

foreach (var property in properties)
{
    object valueToSet;
    if(valuesToSet.TryGetValue(property.Name, out valueToSet))
    {
        property.SetValue(settings, valueToSet);
    }
}

Console.WriteLine(settings.BitmapUnembeddableFonts); //false
Console.WriteLine(settings.UsePdaA); //true