Могут ли производные определения интерфейса C # переопределить определения функций? - PullRequest
1 голос
/ 17 октября 2011

Я определяю geenral API, который будет иметь ряд более конкретных дериваций, и хочу знать, достаточно ли мощны интерфейсы C # для моделирования этого, и если да, то как, а если нет, то как еще я мог бы моделировать это.

Чтобы проиллюстрировать, что я пытаюсь сделать, представьте API аутентификации с общим интерфейсом с функцией Authenticate, которая принимает абстрактный AuthenticationToken. Я хочу затем создать более конкретные формы этого интерфейса, как показано ..

abstract class AuthenticationToken
{
}

interface IAthentication
{
    bool Authenticate(string name, AuthenticationToken token);
}

class DoorKey : AuthenticationToken
{
}

interface IDoorAthentication : IAthentication
{
    bool Authenticate(string name, DoorKey token);
}

class DoorUnlocker : IDoorAthentication
{

    public bool Authenticate(string name, DoorKey token)
    {
    }
}

Мое намерение состоит в том, чтобы производный интерфейс ограничивался соответствием форме высокого уровня, но C # не интерпретирует это.

С наилучшими пожеланиями

Помоги мне, Джон Скитс ... ты моя единственная надежда. (Извините ... мои звездные войны BluRays прибыли!)

1 Ответ

5 голосов
/ 17 октября 2011

Это то, что вы хотите:

abstract class AuthenticationToken
{
}

interface IAthentication<T> where T : AuthenticationToken
{
    bool Authenticate(string name, T token);
}

class DoorKey : AuthenticationToken
{
}

interface IDoorAthentication : IAthentication<DoorKey>
{
}

class DoorUnlocker : IDoorAthentication
{
    public bool Authenticate(string name, DoorKey token)
    {
    }
}

Обобщения с ограничениями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...