Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

System.Attribute više o tome..

[es] :: .NET :: System.Attribute više o tome..

[ Pregleda: 1877 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.adsl.net.t-com.hr.



+26 Profil

icon System.Attribute više o tome..22.10.2009. u 05:27 - pre 176 meseci
čitam malo inside C# i ovaj dio nisam najbolje shvatio...
zašto se ovo opće koristi i koja je glavna prednost toga... hvala... nemojte me uslati sad na reference bio tamo i sve al tu se nažalost izgubim s engleskim... makar je i knjiga na en taj dio nekako ima dosta riječi koje nisam znao protumačit...
there's no place like 127.0.0.1
 
Odgovor na temu

IvanBeograd
Kladza
Beograd

Član broj: 83376
Poruke: 379
89.216.46.*

Sajt: www.dza-bu-drz-ne-daj.com


Profil

icon Re: System.Attribute više o tome..26.10.2009. u 01:49 - pre 176 meseci
Ne znam sta da ti kazem na to,primer najbolje kaze,...,ovako,atributi su deo podataka o nekoj komponenti u netu,ako tako moze da se kaze.Nije to definicija,nego moj zakljucak.Postoje 2 tipa atributa : oni sto postoje u .Net-u,i one sto mi napisemo.Jedan od primera za atribute sto postoje u netu je DllImport.

Ovde imas mali tutorial koji ti je sasvim dovoljan za atribute da naucis sve sta ce ti trebati :

http://www.codeguru.com/csharp.../assemblies/article.php/c7009/

Nadam se da sam ti bar malo pomogao.Pozdrav
SERVIA NOSTRUM REGNUM!
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: System.Attribute više o tome..06.11.2009. u 16:58 - pre 175 meseci
Atributi su korisni ako recimo imamo neku našu klasu koja je deo Data sloja neke naše aplikacije.
Kada klasi damo atribut [System.ComponentModel.DataObject] tada možemo u dizajneru da povežemo objekat te klase
kao izvor podataka.
A vi,kako 'te?
 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.adsl.net.t-com.hr.



+26 Profil

icon Re: System.Attribute više o tome..06.11.2009. u 17:00 - pre 175 meseci
da... kužim to ali di specificiramo onda neke stvari glede toga... zašto je to tako? zanima me pozadina toga
there's no place like 127.0.0.1
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.viser.edu.rs.



Profil

icon Re: System.Attribute više o tome..06.11.2009. u 17:08 - pre 175 meseci
Moguće je da želiš da znaš nešto više od samog korišćenja, ja nisam išao tako daleko.
Meni je dovoljno da znam da atribut određuje nekakvu klasifikaciju objekata, kako bi se lakše snalazili.
Ipak nemam dovoljno iskustva, a pošto sam lenj, znaću više o tome tek kada mi bude zatrebalo :)
A vi,kako 'te?
 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.adsl.net.t-com.hr.



+26 Profil

icon Re: System.Attribute više o tome..06.11.2009. u 18:42 - pre 175 meseci
pošten i iskren odgovor :) cjenim to
there's no place like 127.0.0.1
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
109.93.12.*

Jabber: DarkMan


Profil

icon Re: System.Attribute više o tome..06.11.2009. u 22:29 - pre 175 meseci
Atributi sluze za pridruzivanje nekih podataka klasama i clanovima klase. Koriste se kada je potrebno pridruziti neki bitan podatak koji ce se koristiti u nekom procesu. Na primer, atributi Category, DisplayName i Description se dodaju svojstvima a ti podaci se zatim prikazuju u kontroli PropertyGrid.

Code:

        public class MyClass
        {
            [Category("MyProperty category name")] 
            [DisplayName("MyProperty alternate name")]  
            [Description("property description");
            public bool MyProperty { get; set; }
        }

Ako se Category izostavi svojstvo bi trebalo da bude svrstano pod kategoriju Misc.
Ako se DisplayName izostavi u PropertyGrid-u ce se prikazati stvarno ime svojstva.

Atributi su u sustini klase koje nasledjuju klasu System.Attribute a koriste se tako sto se ispred definicije klase ili nekog njenog clana navede naziv klase u uglastim zagradama.
Po nekom nepisanom pravilu nazivi svih atributa bi trebalo da se zavrsavaju sa Attribute a kada se navode ovaj sufiks nije potrebno navoditi. Na primer:

Code:

        [Serializable]
        public class MyClass
        {
            [Serializable]
            public bool MyProperty { get; set; }
        }


je isto sto i

Code:

        [SerializableAttribute]
        public class MyClass
        {
            [SerializableAttribute]
            public bool MyProperty { get; set; }
        }

Ako kao u ovom slucaju atribut Serializable ima default konstruktor (znaci bez parametara), posle naziva mozes staviti male zagrade a i ne moras. Znaci moglo je i:
Code:

        [Serializable()]
        public class MyClass
        {
            [Serializable()]
            public bool MyProperty { get; set; }
        }



Za svaku klasu i njene clanove se moze vezati veci broj atributa tako sto se svaki za sebe navede izmedju uglastih zagrada ili se svi stave izmedju jednog para uglastih zagrada ali se razdvoje zarezom:

Code:

        public class MyClass
        {
            [Category("category"), DisplayName("name"), Description("desc")]
            public bool MyProperty { get; set; }
        }


Sistem atributa je moguc zahvaljujuci postojanju refleksije. Refleksija omogucava pregled strukture programa i njegovu izmenu za vreme samog izvrsavanja programa. Putem refleksije mozes da procitas kompletnu strukturu nekog objekta: kog je tipa, naziv, svi njegovi clanovi...
I naravno, putem refleksije mozes da procitas koji su atributi vezani za neku klasu ili clanova neke klase.

Primer kreiranja atributa i koriscenja:
Code:

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class SampleAttribute: Attribute
    {
        private SampleValue m_Value = SampleValue.Default;

        public SampleValue Value
        {
            get { return m_Value; }
        }

        public SampleAttribute()
        {
        }

        public SampleAttribute(SampleValue value)
        {
            m_Value = value;
        }
    }

    public enum SampleValue
    {
        Default,
        One,
        Two,
        Three
    }

Pri samom definisanju svog atributa moras mu navesti kako ce se koristiti a za to se koristi atribut AttributeUsage.
Prvi parametar ukazuje nad kojim tipovima entiteta ce se atribut primenjivati (u ovom slucaju smo naveli da se atribut moze dodeliti klasama i svojstvima). AllowMultiple parametar oznacava da li se jedan atribut moze navesti vise puta za jedan isti entitet. Inherited oznacava da li se atribut nasledjuje prilikom nasledjivanja klasa.

Ovaj nas atribut ima default konstruktor i jedan konstruktor sa jednim parametrom, sto znaci da se moze koristiti ovako:

Code:

    [Sample]
    public class MyClass
    {
        [Sample(SampleValue.Two)]
        public bool MyProperty { get; set; }
    }


Sada kada smo napravili atribut i dodali ga nekim entitetima, potrebno je to i nekako procitati.

Code:

    MyClass obj = new MyClass();

    object[] attribs = typeof(MyClass).GetCustomAttributes(typeof(SampleAttribute), true);
    if(attribs.Length > 0) {
        MessageBox.Show("Class value: " + ((SampleAttribute)attribs[0]).Value);
    }

    attribs = typeof(MyClass).GetProperty("MyProperty").GetCustomAttributes(typeof(SampleAttribute), true);
    if(attribs.Length > 0) {
        MessageBox.Show("Property value: " + ((SampleAttribute)attribs[0]).Value);
    }


Sistem atributa se dosta koristi u samom .NET Frameworku: dodavanja detaljnijeg opisa svim svojstvima kontrola, sakrivanje svojstava od PropertyGrid kontrole, sakrivanje svojstava i polja od editora programskog koda, serijalizacija objekata, importovanje windows API-ja, ...

Ako sam nesto pogresio ispravite me.
 
Odgovor na temu

[es] :: .NET :: System.Attribute više o tome..

[ Pregleda: 1877 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.