Hi James,
Attributes can have methods and use any kind of code in the constructor.
This compiles/runs just fine on my machine.
using System;
public class MyAttribute : Attribute
{
public MyAttribute()
{
System.Windows.Forms.MessageBox.Show("MyAttribute Constructor");
}
public void Hello()
{
System.Windows.Forms.MessageBox.Show("Hello from MyAttribute");
}
}
[MyAttribute()]
class AttributeTest
{
static void Main()
{
Type type = typeof(AttributeTest);
// check if attribute exists
if(type.IsDefined(typeof(MyAttribute), true))
{
// create an instance of the attribute
MyAttribute tmp =
type.GetCustomAttributes(false)[0] as MyAttribute;
// call method on attribute
tmp.Hello();
}
}
}
/Mikael
"James Lapalme" <ja***********@videotron.ca> skrev i meddelandet
news:%2****************@tk2msftngp13.phx.gbl...
Hy,
I understand that attribute programming is used to add metadata to the
code, but since they are implemented with a class and we can extend that class,
we should be able to do any normal class thing with attributes like:
-Have methods
-Use any kind of code in the constructor and the methods (ex. Use a
MessageBox)
But the run time will not execute a MessageBox in the constructor?? why?
Where is it defiened that and attribute can only have fields (properties)
and that the constructor is used only to init these
fields....???
James