2010-05-10 5 views
13

En primer lugar, deseo escribirme un tipo genérico para las operaciones contra el Active Directory subyacente.Cualquier equivalencia VBNET de C# donde la palabra clave de restricción genérica?

Para aquellos de ustedes que conocen acerca de AD y el System.DirectoryServices namespace, el DirectoryEntry class es el más importante junto con la clase DirectorySearcher.

Cuando se habla el lenguaje AD, todo es un DirectoryEntry. Dicho esto, mi aplicación necesita administrar usuarios, grupos y unidades organizativas (OU). Cada uno de estos objetos son entradas AD. Entonces, esto me parece un buen candidato para GenericTypes.

Lo que quiero lograr es la siguiente:

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... 
} 

Mi biblioteca de clases debe responder a los siguientes criterios organical:

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

Bueno, supongo que ya he dado demasiados detalles para el propósito de mi pregunta, pero cualquier sugerencia sobre la arquitectura y los patrones de diseño también es bienvenida. Mi pregunta es:

¿Existe una equivalencia de VBNET 2.0 de la palabra clave C# where (generic type constraint), o cualquier solución alternativa de mejores prácticas?

Los resultados de mis búsquedas parecen finalizar con la conclusión de que se puede deshacer. Así que estoy pidiendo ...

Respuesta

35

De esta manera:

Public Class DirectorySource(Of T As ITop) 

limitaciones múltiples están encerrados por llaves, así:

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

Se podría pensar que sería algo como esto ' De T como uno de los siguientes artículos ITop, IDisposable, Class, New' – ChaosPandion

+6

@ChaosPandion: Las restricciones genéricas son anded, not ored. – SLaks

Cuestiones relacionadas