c# - 如何检查属性是否存在于c#中的动态匿名类型?
问题描述:
我有一个匿名类型对象,我从一个方法中以动态形式接收它我想检查该对象上存在的属性.
I have an anonymous type object that I receive as a dynamic from a method I would like to check in a property exists on that object.
....
var settings = new {
Filename="temp.txt",
Size=10
}
...
function void Settings(dynamic settings) {
var exists = IsSettingExist(settings,"Filename")
}
我将如何实现 IsSettingExist ?
How would I implement IsSettingExist ?
答
public static bool IsPropertyExist(dynamic settings, string name)
{
if (settings is ExpandoObject)
return ((IDictionary<string, object>)settings).ContainsKey(name);
return settings.GetType().GetProperty(name) != null;
}
var settings = new {Filename = @"c: empq.txt"};
Console.WriteLine(IsPropertyExist(settings, "Filename"));
Console.WriteLine(IsPropertyExist(settings, "Size"));
输出:
True
False