26
février
2007
Object Initializer, une équivalence existe déjà sur les attributs
février
2007
J’ai fait une découverte intéressante aujourd’hui en utilisant un StrongNameIdentityPermissionAttribute. Sur les attributs, afin d’éviter de devoir créer 50 constructeurs, on peut utiliser un équivalent des object initializer :
public class Class1
{
[MyAttribute(Test1 = "un")]
public void Test1()
{
}
[MyAttribute(Test2 = "deux")]
public void Test2()
{
}
[MyAttribute(Test1 = "un", Test2 = "deux")]
public void Test1Et2()
{
}
}
public class MyAttribute : Attribute
{
public MyAttribute()
{
}
private string _test1;
public string Test1
{
get
{
return _test1;
}
set
{
_test1 = value;
}
}
private string _test2;
public string Test2
{
get
{
return _test2;
}
set
{
_test2 = value;
}
}
}
{
[MyAttribute(Test1 = "un")]
public void Test1()
{
}
[MyAttribute(Test2 = "deux")]
public void Test2()
{
}
[MyAttribute(Test1 = "un", Test2 = "deux")]
public void Test1Et2()
{
}
}
public class MyAttribute : Attribute
{
public MyAttribute()
{
}
private string _test1;
public string Test1
{
get
{
return _test1;
}
set
{
_test1 = value;
}
}
private string _test2;
public string Test2
{
get
{
return _test2;
}
set
{
_test2 = value;
}
}
}
A noter qu’en VB il faut utiliser := pour initialiser une propriété d’un attribut.