Любая эквивалентность VBNET для С#, где ключевое слово с общим ключом?

Во-первых, я хочу написать себе общий тип для операций с базовым Active Directory.

Для тех из вас, кто знает о AD и пространство имен System.DirectoryServices, DirectoryEntry class является наиболее важным, а также классом DirectorySearcher.

Говоря языком AD, все это DirectoryEntry. При этом мое приложение должно управлять пользователями, группами и организационными единицами (OU). Каждый из этих объектов представляет собой записи AD. Тогда это звучит для меня хорошим кандидатом на GenericTypes.

Я хочу выполнить следующее:

public interface ITop {
    string Path { get; set; }
    string ObjectClass { get; }
    string ContainerName { get; set; }
    // [...]
}

public interface IGroup : ITop {
    // Speciality properties here...
}

public interface IUser : ITop {
    // Speciality properties here...
}

// And so forth...

public sealed class DirectorySource<T> where T : ITop {
    // Methods against AD here...
}

Моя библиотека классов ДОЛЖНА ответить на следующий органический критерий:

  • VS2005 VBNET
  • .NET 2.0
  • Active Directory
  • Windows Forms

Ну, я думаю, что я уже дал слишком много деталей для моего вопроса, но любые предложения по архитектуре и шаблонам дизайна приветствуются. Мой вопрос:

Существует ли эквивалентность VBNET 2.0 слова С#, где ключевое слово (ограничение общего типа), или какие-либо рекомендации об ошибках?

Результаты моих поисков, похоже, заканчиваются недействительным заключением. Поэтому я прошу...

Ответы

Ответ 1

Вот так:

Public Class DirectorySource(Of T As ITop)

Несколько ограничений заключаются в фигурные скобки, например:

Public Class DirectorySource(Of T As { ITop, IDisposable, Class, New })