2010-05-10 37 views
13

Đầu tiên, tôi muốn viết cho mình một kiểu chung cho các hoạt động chống lại Active Directory cơ bản.Bất kỳ tương đương VBNET nào của C#, nơi từ khóa ràng buộc chung chung?

Đối với những người bạn biết về AD và System.DirectoryServices namespace, thì DirectoryEntry class là điều quan trọng nhất cùng với lớp DirectorySearcher.

Khi nói ngôn ngữ AD, mọi thứ đều là DirectoryEntry. Như đã nói, ứng dụng của tôi cần quản lý Người dùng, Nhóm và Đơn vị Tổ chức (OU). Mỗi đối tượng trong số này là các mục AD. Sau đó, điều này âm thanh với tôi một ứng cử viên tốt cho GenericTypes.

Những gì tôi muốn thực hiện điều này là:

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

thư viện lớp của tôi phải đáp ứng tiêu chí organical sau:

  1. VS2005 VBNET
  2. .NET 2.0
  3. Active Directory
  4. Biểu mẫu Windows

Vâng, tôi đoán tôi đã đưa ra quá nhiều chi tiết cho mục đích câu hỏi của tôi, nhưng mọi đề xuất về kiến ​​trúc và mẫu thiết kế đều được chào đón. Câu hỏi của tôi là:

Có VBNET 2.0 tương đương với từ khóa C# where (generic type constraint) hoặc bất kỳ giải pháp thực hành tốt nhất nào không?

Kết quả tìm kiếm của tôi dường như kết thúc bằng kết luận có thể hoàn tác. Vì vậy, tôi đang hỏi ...

Trả lời

35

Như thế này:

Public Class DirectorySource(Of T As ITop) 

Nhiều hạn chế được bao bọc bởi niềng răng, như thế này:

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

Bạn sẽ nghĩ rằng nó sẽ là một cái gì đó giống như này ' T Là một trong các mục sau ITop, IDisposable, Class, New' – ChaosPandion

+6

@ChaosPandion: Các ràng buộc chung là anded, not ored. – SLaks

Các vấn đề liên quan