我有以下问题。
我的自动属性SearchedObjClass,SearchedProp,SearchedPropValue结果为空值,尽管我在主程序中为它们分配了值: 有人可以帮助我找出问题所在:
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";
}
}
答案 0 :(得分: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";
}
}