首页 > 解决方案 > 将项目添加到枚举的扩展方法

问题描述

我正在尝试编写一个扩展方法,它将向枚举添加额外的项目。

我从未编写过扩展方法,并且查看并尝试了我在 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 选项。我很感激任何帮助。

标签: c#extension-methods

解决方案


扩展方法将新的类实例方法添加到类型。它们不允许您将实际成员添加到类型。你试图做的事情是不可能的。

没有理由你不能做到(DialogResult)8并使它成为一个常数。

public static class ExtraDialogResults
{
    public const DialogResult ApiKey = (DialogResult)8;
    // and so on...
}

但是......仅仅因为你可以,并不意味着你应该。更好的方法是定义您自己的具有所需结果的枚举,并将对话功能包装在返回该结果的东西中。


推荐阅读