Klasa do obsługi AD - próbka kodu do oceny

Klasa do obsługi AD - próbka kodu do oceny
SN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Witam,
Jestem początkującym programistą i chciałbym wrzucić próbkę kodu do oceny.

Kopiuj
    
class ADClass
    {
        DirectoryEntry rootPath;
        DirectorySearcher search;

        
        SearchResult result;
        public SearchResultCollection allRecordsCollection;

        private ArrayList parameters = new ArrayList();
        
        public ADClass(string domainName, string searchFilter)
        {
            rootPath = new DirectoryEntry(domainName);
            search = new DirectorySearcher(rootPath);
            search.Filter = searchFilter;
        }
        
        public void addParameter(string parameter)
        {
            parameters.Add(parameter);
        }

        public void loadParameters() 
        {
            for (int i = 0; i < parameters.Count; i++) {
                search.PropertiesToLoad.Add(parameters[i].ToString());
            }
        }

        public void findOne(){result = search.FindOne();}
        public void findAll() { allRecordsCollection = search.FindAll(); }
        
        public string getOne(string what)
        {
             return result.Properties[what][0].ToString();
        }
       
    }

// Przykładowe użycie

ADClass ad = new ADClass("LDAP://OU=Organization Unit,DC=domena,DC=pl", "(|(&(objectCategory=person)(objectClass=user)(givenName=Ma*)(sn=*)(department=*)))");
            
            ad.addParameter("givenName");
            ad.addParameter("sn");
            ad.addParameter("department"); 
            ad.findOne();

            Console.Write(ad.getOne("givenName"));
            Console.Write(ad.getOne("sn")); 

Kod jeszcze powstaje i będzie udoskonalany, ale chciałbym się dowiedzieć na tym etapie czy popełniam jakieś błędy ew. czy da radę zrobić to jeszcze sprawniej. Z góry dziękuję za pomoc.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
2

Klasa jak klasa, ale jej użycie

Kopiuj
ADClass ad = new ADClass("LDAP://OU=Organization Unit,DC=domena,DC=pl", "(|(&(objectCategory=person)(objectClass=user)(givenName=Ma*)(sn=*)(department=*)))");

będzie katorgą. Opakuj to tak, by na zewnątrz klasy nie było widać tego syfu, tylko sensowne, coś mówiące, parametry.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Dlaczego używasz ArrayList?

SN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0
Azarien napisał(a):

Klasa jak klasa, ale jej użycie

Kopiuj
ADClass ad = new ADClass("LDAP://OU=Organization Unit,DC=domena,DC=pl", "(|(&(objectCategory=person)(objectClass=user)(givenName=Ma*)(sn=*)(department=*)))");

będzie katorgą. Opakuj to tak, by na zewnątrz klasy nie było widać tego syfu, tylko sensowne, coś mówiące, parametry.

Właśnie będę nad tym pracował, chciałem się dowiedzieć czy na tym etapie w miare wszystko ok.

somekind napisał(a):

Dlaczego używasz ArrayList?

A dlaczego by nie? Potrzebna jest mi najprostsza tablica do przechowania parametrów.

  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast konstruktora użyj buildera. Sama inicjalizacja klasy będzie wtedy znacznie prostsza.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
3
snsv napisał(a):

A dlaczego by nie? Potrzebna jest mi najprostsza tablica do przechowania parametrów.

ArrayList to nie jest tablica.
A nie należy jej używać, bo jest niewygodna, przez to, że potrafi przechowywać tylko object i wymaga rzutowania na konkretny typ, aby wyciągnąć konkretną wartość.
Chcesz mieć dynamiczną listę stringów? To użyj List<string>.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.