PropertyInfo[] properties = type.GetProperties().Select(x => x.DeclaringType.ToString() == "CrazyNinjaBadger");
Select(...)
返回 的实现IEnumerable<T>
。编译器错误非常明确。
另一点是您要过滤属性。.Select(...)
用于将枚举投影到另一个相同或其他类型的枚举中。
例如:
IEnumerable<string> strings = new string[] { "0", "1" };
// Converting the string enumerable to an enumerable of integers:
IEnumerable<int> integers = strings.Select(some => int.Parse(some));
// Also, convert each strings into an anonymous object!
IEnumerable<object> whoKnows = strings.Select(some => new { Value = some });
为了过滤一个枚举,你需要使用.Where(...)
.
另一方面,x.DeclaringType.ToString() == "CrazyNinjaBadger"
是正确的,但应该是正确的x.DeclaringType.Name == "CrazyNinjaBadger"
(您不需要将类型转换为字符串,因为Type
它具有属性Name
)。
最后我认为你不需要将结果设置在数组中,你可以这样做:
IEnumerable<PropertyInfo> properties =
type.GetProperties()
.Where(x => x.DeclaringType.Name == "CrazyNinjaBadger");