アクティブなディレクトリユーザからデフォルトでUserPrincipal
オブジェクトにない属性の一部を取得する方法を見つけようとしていました。私の答えを探しているうちに、私はthis questionを見つけました。私は@marc_sによって投稿された答えが正しいと確信しています、少なくともそれは非常に便利です。有用性のため、私はUserPrincipalEx
クラスを作成し、彼の答えで提案された@marc_sのようなものをすべて行いました。このクラス自体は、拡張属性(この場合はtitle
)が常に空の文字列を返すという事実を除いて、正しく定義されているようです。私は、その属性がtitle
と呼ばれていることをADで二重にチェックしました。私は正しい属性を取得する必要があります。拡張されたUserPrincipalのみが空の文字列を返す
@marc_sにも、クラスがスケルトンであることが記載されていますが、そのために何を追加する必要があるのでしょうか?
自分の.cs
クラスの2つのクラスをUserPrincipalEx.cs
と定義し、そのファイルにUserPrincipalExSearchFilter
とUserPrincipalEx
のクラスが定義されています。しかし、私のコードでオブジェクトを作成すると、常に空の文字列が返されます。
UserPrincipalEx user = new UserPrincipalEx(principal.Context);
if (user == null) return false;
return user.Title == "A value other than empty" | (user.Title == "" || user.Title == null);
さらに、title
の値をADから取得する必要がありますか?
アップデート:私はtitle
の検索がUserPrincipalEx
属性従えば
常にそれが私がUserPrincipalEx.cs
常に
[DirectoryProperty("title")]
public string Title
{
get
{
if (ExtensionGet("title").Length != 1)
return string.Empty;
return (string)ExtensionGet("title")[0];
}
set { ExtensionSet("title", value); }
}
それをして何か間違ったことをしたように私が感じるように続けている、ヌルだと言いますreturn string.Empty;
に当たって、行のように空文字列を返します
Updat e 2:
UserPrincipalExが探している拡張属性が常にnullを返し、文字列を空にすることは問題ではありません。