我正在使用反射来调用C#中的方法和访问属性。已经声明了这些属性和方法的名称(来自某个数据源的字符串),但不是“方法友好”的方式。
例如,特定对象具有属性“HasAModifiedShortStyle” 在运行时我不知道这一点。我知道我正在寻找一个用“有一个修改过的ShortStyle”描述的属性。
所以很容易就是使用
转换为TitleCaseSystem.Globalization.CultureInfo.CurrentCulture.TextInfo)
并将“”替换为“”。
这很好用,但TextInfo.ToTitleCase()将“ShortStyle”更改为“Shortstyle”。小写的's'导致我找不到propertyName。 作为参考,我正在使用
访问该属性currentObjectValue.GetType().GetProperty(propertyName);
是否有一种简单的方法可以转换为TitleCase,同时保留字内的capitilization?
答案 0 :(得分:1)
只需将其用于说明中的每个字词:
yourString[0].ToString().ToUpper() + yourString.Substring(1)
答案 1 :(得分:1)
这种做法怎么样?
currentObjectValue.GetType().GetProperties().FirstOrDefault(propInfo => propInfo.Name.Equals("Shortstyle", StringComparison.InvariantCultureIgnoreCase));
答案 2 :(得分:0)
这会将描述字符串拆分为单个单词,将第一个字母大写,然后将它们连接回一个字符串:
string s = "has a modified ShortStyle";
propName = string.Join(string.Empty,
(from word in s.Split(' ')
select word.Substring(0, 1).ToUpper() + word.Substring(1)).ToArray());