将项目添加到枚举的扩展方法

时间:2019-04-04 16:06:59

标签: c# extension-methods

我正在尝试编写一种扩展方法,该方法将向枚举添加其他项。

我从来没有写过扩展方法,也没有看过并尝试过在Stackoverflow和其他Internet站点上找到的几个示例,但是似乎没有一个确切地解决我想做的事情。我正在尝试扩展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选项。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

没有理由你不能(DialogResult)8并将其设为常数。

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

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