|
|
Iinterfaces (Interfacce) |
|
|
Utilizzo degli attributi in C# |
Code Project - articolo originale |
|
Gli attributi in C# non sono altro che informazioni che vengono scambiate tra gli sviluppatori.
Queste informazioni possono essere attaccate a class, method, namespace, assembly, property, delegate, enum, event, interface e struct per aggiungere informazioni metadati al proprio assembly.
Gli attributi sono definiti utilizzando le "parentesi quadre" [ e ].
|
public class Class1
{
[Obsolete]
public void Method1()
{
}
public void Method2()
{
}
}
In questo esempio il Method1 è stato adornato con l'attributo Obsolete e quando si utilizzerà il metodo, verrà comunicato allo sviluppatore che questo metodo è obsoleto.
|
Creare attributi personalizzati.
Gli attributi devono derivare dalla classe Attribute
class PersonalAttribute : Attribute
{
public string AttributeText { get; set; }
}
[PersonalAttribute(AttributeText="Attributo personalizzato per classe")]
public class Class1
{
[PersonalAttribute(AttributeText="Attributo personalizzato per metodo")]
public void Method1()
{
}
[PersonalAttribute(AttributeText="Attributo personalizzato per proprietà")]
public void Property1{ get; set; }
}
|
Reflection.
Gli attributi hanno una grande importanza quando si utilizza la reflection perchè permettono di fornire maggiori informazioni agli sviluppatori che analizzano le nostre classi
[AttributeUsage(AttributeTargets.Property)]
class Check : Attribute
{
public int MaxLength { get; set; }
}
public class Class1
{
private string _CustomerCode;
[Check(MaxLength=10)]
public string CustomerCode
{
get { return _CustomerCode; }
set { _CustomerCode = value; }
}
}
Quando si utilizza la Reflection per accedere ai dati ed alle informazioni:
Class1 myClass = new Class1();
myClass.CustomerCode = "1234567890123456789";
Type classType = myClass.GetType();
foreach(PropertyInfo p in classType.GetProperties())
{
foreach(Attribute a in p.GetAttributes(false))
{
Check c = (Check)a;
if (c.Name.Equals("CustomerCode"))
{
if (my.CustomerCode.Length > c.MaxLength)
throw new Exception("Lunghezza troppo lunga!");
}
}
}
|
|
|
|
|
|
|
|
|
|
I23 di Boccaletti Emanuele 41121 Modena (MO) Tel. +39 347 1302420 emanuele@i23.eu Skype: emanuele.boccaletti |
|
|
|
|