我正在尝试编写一种扩展方法,该方法将向枚举添加其他项。
我从来没有写过扩展方法,也没有看过并尝试过在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选项。感谢您的帮助。
答案 0 :(得分:2)
扩展方法将新的类似于实例的方法添加到类型中。它们不允许您将实际成员添加到类型。您试图做的事是不可能的。
没有理由你不能(DialogResult)8
并将其设为常数。
public static class ExtraDialogResults
{
public const DialogResult ApiKey = (DialogResult)8;
// and so on...
}
但是 ...仅仅因为您可以,并不意味着您应该。更好的方法是定义自己的枚举,该枚举具有所需的结果,并将对话框功能包装在返回该值的东西中。