Любая VBNET эквивалентность C #, где ключевое слово ограничения? - PullRequest
13 голосов
/ 10 мая 2010

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

Для тех из вас, кто знает об AD и пространстве имен System.DirectoryServices , класс DirectoryEntry является наиболее важным наряду с классом 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...
}

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

  1. VS2005 VBNET
  2. .NET 2.0
  3. Active Directory
  4. Windows Forms

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

Есть ли в VBNET 2.0 эквивалент C # где (ключевое ограничение общего типа) ключевое слово или какие-либо обходные решения?

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

1 Ответ

35 голосов
/ 10 мая 2010

Как это:

Public Class DirectorySource(Of T As ITop)

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

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