Тип данных enum в интерфейсе в C # - PullRequest
0 голосов
/ 28 сентября 2011

Как использовать тип данных enum в интерфейсе?

Возможно ли это?

public interface IParent1
{
    string method1(Test enum);
}

public class Parent1 : IParent1
{
    public enum Test 
    {
        A, 
        B, 
        C
    }

    public string method1(Test enum)
    {
        return enum.ToString();
    }
}

Ответы [ 3 ]

10 голосов
/ 28 сентября 2011

enum является зарезервированным ключевым словом в C #.Вы можете использовать префикс @, если хотите использовать его в качестве имени переменной:

public enum Test { A, B, C };

public interface IParent1
{
    string method1(Test @enum);
}

public class Parent1 : IParent1
{
    public string method1(Test @enum)
    {
        return @enum.ToString();
    }
}

Но я не люблю использовать зарезервированные слова для имен переменных.Лучшим подходом будет:

public enum Test { A, B, C };

public interface IParent1
{
    string method1(Test test);
}

public class Parent1 : IParent1
{
    public string method1(Test test)
    {
        return test.ToString();
    }
}
0 голосов
/ 28 сентября 2011

Если вы хотите, чтобы ваше перечисление было различным в каждом реализующем классе, вы должны использовать универсальный интерфейс, такой как

public interface MyInterface<T>
{
    string MyMethod(T myEnum)
}

Если он должен быть одинаковым для всех реализующих классов, просто не помещайте его вне какого-либо класса:

public enum MyEnum { A, B, C }

public interface MyInterface
{
    string MyMethod(MyEnum myEnum)
}
0 голосов
/ 28 сентября 2011

Не вижу проблем с этим.Но почему вы вкладываете объявление enum в реализацию интерфейса?Ваш код не будет компилироваться, потому что: 1. Вы используете зарезервированное слово enum 2. value не объявлено

Попробуйте использовать это:

public enum Test { A, B, C };

public interface IParent1 { string method1(Test @enum);}

public class Parent1 : IParent1
{
    public string method1(Test @enum)
    {
        return @enum.ToString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...