gpt4 book ai didi

c# - 有没有办法将类中的枚举属性设置为所有可用枚举?

转载 作者:太空狗 更新时间:2023-10-29 17:31:33 26 4
gpt4 key购买 nike

首先,我不知道该给这个问题起什么标题——我什至不知道该如何表述。

现在开始提问。让我们以System.IO.FileSystemWatcher为例你设置它的类是NotifyFilter属性:

            this.FileSystemWatcher1.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.FileName 
| NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security
| NotifyFilters.Size;

设置单个属性的代码相当多。巡检NotifyFilter ,它是一个枚举。是否有一种“懒惰”或“快捷方式”的方式来同时设置所有这些属性?我知道不一定需要,但我的好奇心被激起了。

this.FileSystemWatcher1.NotifyFilter = <NotifyFilters.All>

最佳答案

你总是可以做这样的事情,

NotifyFilter ret = 0;
foreach(NotifyFilter v in Enum.GetValues(typeof(NotifyFilter)))
{
ret |= v;
}

不幸的是,我不知道更好的方法。但您始终可以将其放入通用实用程序方法中。

private static T GetAll<T>() where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new NotSupportedException(); // You'd want something better here, of course.
}

long ret = 0; // you could determine the type with reflection, but it might be easier just to use multiple methods, depending on how often you tend to use it.
foreach(long v in Enum.GetValues(typeof(T)))
{
ret |= v;
}

return (T)ret;
}

关于c# - 有没有办法将类中的枚举属性设置为所有可用枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854809/

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