gpt4 book ai didi

c# - PCL 是否支持 GetFields?

转载 作者:太空狗 更新时间:2023-10-29 17:37:58 27 4
gpt4 key购买 nike

我正在尝试实现一个位于 https://github.com/jbogard/presentations/blob/master/WickedDomainModels/After/Model/Enumeration.cs 的枚举类.

在下面的代码中,我收到一个编译错误,无法解析 GetFields

 public static IEnumerable<T> GetAll<T>() where T : Enumeration
{
var type = typeof(T);
var fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);

return fields.Select(info => info.GetValue(null)).OfType<T>();
}

根据 http://msdn.microsoft.com/en-us/library/ch9714z3(v=vs.110).aspx ,可移植类库支持此方法。

我的库针对 Windows 应用商店应用程序、.NET Framework 4.5 和 Windows Phone 8 的 .NET。

知道这里发生了什么吗?

解决方案

public static IEnumerable<T> GetAll<T>() where T : Enumeration
{
var type = typeof(T);
var fields = type.GetRuntimeFields().Where(x => x.IsPublic || x.IsStatic);

return fields.Select(info => info.GetValue(null)).OfType<T>();
}

public static IEnumerable GetAll(Type type)
{
var fields = type.GetRuntimeFields().Where(x => x.IsPublic || x.IsStatic);

return fields.Select(info => info.GetValue(null));
}

最佳答案

要添加到 Damien 的答案中,在 .Net for Windows Store Apps 中,您可以使用以下扩展方法:

using System.Reflection;

var fields = type.GetRuntimeFields();

http://msdn.microsoft.com/en-us/library/system.reflection.runtimereflectionextensions.getruntimefields.aspx

这似乎等同于 .Net Framework 的 GetFields 方法。

This method returns all fields that are defined on the specified type, including inherited, non-public, instance, and static fields.

关于c# - PCL 是否支持 GetFields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19512274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com