Custom Attribute and Instance Sample?

  • Thread starter Thread starter coconet
  • Start date Start date
C

coconet

I have a currently executing assembly with 3 types, they are all
decorated with a Custom Attribute. Can anyone show a sample of how to
find all of my Types in the current Assembly that have the attribute,
and then put a New instance of each type in a List?

Thanks.
 
coconet said:
I have a currently executing assembly with 3 types, they are all
decorated with a Custom Attribute. Can anyone show a sample of how to
find all of my Types in the current Assembly that have the attribute,
and then put a New instance of each type in a List?

Assembly source = Assembly.GetExecutingAssembly();

List<object> list = new List();
foreach (Type type in source.GetTypes())
{
if (type.GetCustomAttributes(typeof(MyAttribute), false).Length!=0)
{
list.Add(Activator.CreateInstance(type));
}
}
 
coconet said:
I have a currently executing assembly with 3 types, they are all
decorated with a Custom Attribute. Can anyone show a sample of how to
find all of my Types in the current Assembly that have the attribute,
and then put a New instance of each type in a List?

C# 3:

Type[] result = Assembly.GetExecutingAssembly().GetTypes()
.Where(t=>t.IsDefined(typeof(MyAttibute), false)
.Select(t=>Activator.CreateInstance(t));
 
Jon said:
Assembly source = Assembly.GetExecutingAssembly();

List<object> list = new List();
foreach (Type type in source.GetTypes())
{
if (type.GetCustomAttributes(typeof(MyAttribute), false).Length!=0)

You can use type.IsDefined(...) for this.

Alun Harford
 
Alun Harford said:
coconet said:
I have a currently executing assembly with 3 types, they are all
decorated with a Custom Attribute. Can anyone show a sample of how to
find all of my Types in the current Assembly that have the attribute,
and then put a New instance of each type in a List?

C# 3:

Type[] result = Assembly.GetExecutingAssembly().GetTypes()
.Where(t=>t.IsDefined(typeof(MyAttibute), false)
.Select(t=>Activator.CreateInstance(t));

The result type is wrong there, but hey, who's counting :)

I prefer it as a query expression though:

var result = from type in Assembly.GetExecutingAssembly().GetTypes()
where type.IsDefined(typeof(MyAttribute), false)
select Activator.CreateInstance(type);

List<object> objects = result.ToList();
 
Jon said:
Alun Harford said:
coconet said:
I have a currently executing assembly with 3 types, they are all
decorated with a Custom Attribute. Can anyone show a sample of how to
find all of my Types in the current Assembly that have the attribute,
and then put a New instance of each type in a List?
C# 3:

Type[] result = Assembly.GetExecutingAssembly().GetTypes()
.Where(t=>t.IsDefined(typeof(MyAttibute), false)
.Select(t=>Activator.CreateInstance(t));

The result type is wrong there, but hey, who's counting :)

That'll teach me for answering questions at 1am :-)
Good catch!

Alun Harford
 
Back
Top