c# - 将项目添加到枚举的扩展方法
问题描述
我正在尝试编写一个扩展方法,它将向枚举添加额外的项目。
我从未编写过扩展方法,并且查看并尝试了我在 Stackoverflow 和其他网站上找到的几个示例,但似乎没有一个能准确解决我想要做的事情。我正在尝试扩展 Windows.Form.DialogResult 类。我试过下面的代码:
public static class SaveTestDialog
{
public enum CustomDialog( this DialogResult dialogResult )
{
return ApiKey = 8;
return Default = 9;
}
}
我想问题可能是因为它是一种 Windows 方法,所以我在项目中尝试了一个简单的枚举并得到了相同的结果:
public static class CustomSchedule
{
public enum NewSchedule( Schedule schedule )
{
return Weekly = 3;
return Contract = 4;
}
}
对于 DialogResult,我希望在我的应用程序中使用 CustomDialog 时能够获得 DialogResult.ApiKey 和 DialogResult.Default 选项。我很感激任何帮助。
解决方案
扩展方法将新的类实例方法添加到类型。它们不允许您将实际成员添加到类型。你试图做的事情是不可能的。
没有理由你不能做到(DialogResult)8
并使它成为一个常数。
public static class ExtraDialogResults
{
public const DialogResult ApiKey = (DialogResult)8;
// and so on...
}
但是......仅仅因为你可以,并不意味着你应该。更好的方法是定义您自己的具有所需结果的枚举,并将对话功能包装在返回该结果的东西中。
推荐阅读
- sql - 我需要根据两个条件从查询中删除行
- python - 如何对字典python的每个键的值进行排序?
- sql-server - 使用过滤条件查找 tasktype(taskcount,bugcount) 的计数,
- sql - 对 SQL Server 中的长时间运行时间进行基本故障排除的建议
- javascript - 使用 cdk 拖放时,整个 mat-dialog 变为拖动句柄
- javascript - React Native - 为 printAsync 表执行循环
- wordpress-gutenberg - 在设置页面中使用古腾堡编辑器
- java - 如何在 jenkins 中运行 ant build?
- javascript - 多个 if else 条件,cypress 中的承诺
- angular - 抽象基类上的 Angular 9 装饰器