Я пытаюсь вызвать определенный метод (например, метод «Настроение»), связанный с значением Enum
(например, Enum WorkDay: понедельник, вторник, среда и т. Д.).
Я, очевидно, могу сделать случай выбора и вызывать определенные методы, как показано ниже.Enum's and Interfaces
Public Enum WorkDay
Monday
Tuesday
Wednesday
Thursday
Friday
End Enum
Dim CurrentDay As Class1.WorkDay = Class1.WorkDay.Monday
Select Case CurrentDay
Case Class1.WorkDay.Monday
Function_Monday()
Case Class1.WorkDay.Tuesday
Method_Tuesday()
Case Class1.WorkDay.Wednesday
Method_Wednesday()
Case Class1.WorkDay.Thursday
Method_Thursday()
Case Class1.WorkDay.Friday
Method_Friday()
End Select
Однако, я видел, как это делалось раньше, используя интерфейс для Enum
для вызова методов в различных классах. Это означает, что он масштабируется, просто добавив новый класс для более новых типов Enum
и, следовательно, не нужно добавлять дополнительные ноги Case для новых типов Enum
(например, в субботу и воскресенье). Может ли кто-нибудь дать мне код шаблона для этого интерфейса Enum
, так как я просто не могу его воссоздать. Я что-то упускаю!
Почему ваш метод 'Method' не принимает' WorkDay' в качестве аргумента? Тогда вам нужен только один метод и один вызов. Замечание: уже существует ['DayOfWeek'-enum] (https://msdn.microsoft.com/en-us/library/system.dayofweek (v = vs.110) .aspx), и вы получаете текущую с ['DateTime.DayOfWeek'] (https://msdn.microsoft.com/en-us/library/system.datetime.dayofweek (v = vs.110) .aspx):' Dim dow = Date.Today.DayOfWeek ' –
Вы знаете, что вы видели это в .net?в java перечисление может иметь методы, а методы enum-s могут реализовать интерфейс. – k3b
Похоже, вы ищете перечисление классов? И вы хотели бы, чтобы эти классы реализовали определенный интерфейс, чтобы вы могли вызвать Class1.WorkDay.GetMood()? Я не видел ничего подобного в .Net. Возможно, вы видели что-то подобное, используя атрибуты? http://stackoverflow.com/questions/25323406/calling-a-method-by-enum-attribute-in-c-sharp –