似乎由于某种原因 property.GetValue 忽略了 CultureInfo。这是我试图实现的目标:
public static IEnumerable<string> GetViewModelProperties(this IDocumentViewModel vm) {
foreach (var property in vm.GetType().GetProperties().Where(p => (p.PropertyType.IsPrimitive ||
p.PropertyType.GetInterfaces().Any(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable<>))) &&
p.GetIndexParameters().Count() == 0))
{
yield return property.Name + ":" + property.GetValue(vm, System.Reflection.BindingFlags.GetProperty, null, null, System.Globalization.CultureInfo.InvariantCulture);
}
}
我只是使用它保存到磁盘
System.IO.File.WriteAllText("filename.txt", settings.ToString());
在生成的文件中,对于值为 50.33 的 double 类型的属性 Frequency 我得到了
Frequency:50,33
这是 CurrentCulture (波兰语使用逗号作为分隔符),但不是
Frequency:50.33
正如我所料。有什么想法可能是错的吗?