いつも参考になっています。
Active Directory の操作でちょっと判らないところが出たので、教えてください。
using System;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
class Program {
static void Main( string[] args ) {
DirectoryContext context;
context = new DirectoryContext(DirectoryContextType.Forest,"somewhere.co.jp","username","password");
ActiveDirectorySchemaClass schema;
schema = new ActiveDirectorySchemaClass(context, "distinguishedName");
ReadOnlyActiveDirectorySchemaPropertyCollection props;
props = schema.GetAllProperties();
if( props.Count > 0 )
System.Console.WriteLine(props[0].GetType().ToString());
}
}
distinguishedName 属性のスキーマを取得しようとしています。ReadOnlyActiveDirectorySchemaPropertyCollection 型のコレクションを取得しているのです。
マニュアルによるとこのコレクションは、ActiveDirectorySchemaProperty 型のオブジェクトを含むはずなのですが、最後の WriteLine で型名を出力しようとすると、次のようなエラーが出ました。
ハンドルされていない例外: System.InvalidCastException: 型 'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaPropertyCollection' のオブジェクトを型'System.DirectoryServices.ActiveDirectory.ActiveDirectorySchemaProperty' にキャストできません。
場所 System.DirectoryServices.ActiveDirectory.ReadOnlyActiveDirectorySchemaPropertyCollection.get_Item(Int32 index)
場所 Test.Program.Main(String[] args) 場所 D:\Test\Test\Program.cs:行 18
ReadOnlyActiveDirectorySchemaPropertyCollection 型のコレクションのオブジェクト props に保存されている最初のアイテムを、props[0] として参照しようとしている時点で、ActiveDirectorySchemaProperty としては参照できないよ、と言われていると思うのですが、マニュアルによるとこのコレクションの中身は、ActiveDirectorySchemaProperty です。
ちなみに、クイック ウォッチで見ると、list の中身は ReadOnlyActiveDirectorySchemaPropertyCollection でした。
このエラーは、なぜに発生しているのでしょう...。
Visual Studio 2005 + .NET Framework 2.0