-2

次の問題があります。

私の自動プロパティSearchedObjClass、SearchedProp、SearchedPropValueは、メインプログラムで値を割り当てたにもかかわらず、結果がnull値になります。

class ADClassNew
{
    public static DirectoryEntry createDirectoryEntry()
    {
            string ldapusername = "Username";
            string ldapuserpass = "Password";

        using (DirectoryEntry root =new DirectoryEntry())
        {
            ADClassNew adclass = new ADClassNew();
            root.Path = adclass.LdapPath;
            root.Username = ldapusername;
            root.Password = ldapuserpass;
            root.AuthenticationType = AuthenticationTypes.Secure;
            return root;
        }


     }

    public string SearchedObjClass { get; set; }
    public string SearchedProp { get; set; }
    public string SearchedPropValue { get; set; }
    public string LdapPath { get; set; }
    public StringCollection LoadProperties { get; set; }

    public SearchResult searchDirectory()
    {

        DirectoryEntry searchEntry = ADClassNew.createDirectoryEntry();
        DirectorySearcher search = new DirectorySearcher();
        search.SearchRoot = searchEntry;
        ADClassNew adclassnew = new ADClassNew();

       //string _searchedObjClass = SearchedObjClass;
       //string _searchedProp = SearchedProp;
       //string _searchedPropValue = SearchedPropValue;

       search.Filter = string.Format("(&(ObjectClass={0})({1}={2}))", adclassnew.SearchedObjClass, adclassnew.SearchedProp, adclassnew.SearchedPropValue);
       //search.Filter = "(&(objectClass=user)(cn=administrator))";
       search.PropertiesToLoad.Add("memberof");
           SearchResult result = search.FindOne();
       return result;

    }
}


public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ADClassNew adclassnew = new ADClassNew();
        adclassnew.LdapPath = "LDAP://MyDomain";
        adclassnew.SearchedObjClass = "User";
        adclassnew.SearchedProp = "Displayname";
        adclassnew.SearchedPropValue = "administrator";
    }
}
4

1 に答える 1

1

フォーム コンストラクターで作成されたオブジェクトに対して何もする必要はありませんスコープから外れて収集されるだけです。のすべてのインスタンスで値が持続することを期待していますADClassNewか? その場合は、staticプロパティを使用します。

public static string SearchedObjClass { get; set; }
public static string SearchedProp { get; set; }
public static string SearchedPropValue { get; set; }
public static string LdapPath { get; set; }

次に、インスタンスの代わりにクラス名を使用して、初期化でそれらを設定します。

ADClassNew.LdapPath = "LDAP://MyDomain";
ADClassNew.SearchedObjClass = "User";
ADClassNew.SearchedProp = "Displayname";
ADClassNew.SearchedPropValue = "administrator";

または、オブジェクトをフォームのプロパティにして再利用することもできます。

public partial class Form1 : Form
{
    private ADClassNew _adClassNew {get; set;}

    public Form1()
    {
        InitializeComponent();

        _adclassnew = new ADClassNew();
        _adclassnew.LdapPath = "LDAP://MyDomain";
        _adclassnew.SearchedObjClass = "User";
        _adclassnew.SearchedProp = "Displayname";
        _adclassnew.SearchedPropValue = "administrator";
    }
}
于 2013-08-26T14:06:01.897 に答える