views:

35

answers:

1

I'm trying to create a nUnit test to do the following:

1) Load the DLL to test.
2) Iterate among the various types.
3) Find the ones that have a certain custom attribute.
4) Instantiate these types and make sure that all their public properties aren't null.

Here's what I wrote so far:

Assembly assembly = Assembly.LoadFile("MyLib.dll");  
foreach (Type type in assembly.GetTypes()) {  
    if (type.GetCustomAttributes(typeof(CustomAttribute), false).Length != 0) {  
        Object instance = Activator.CreateInstance(type);  
        foreach (PropertyInfo propertyInfo in type.GetProperties()) {  
            // how to go on from here?
        }  
    }  
}  

As you can see I don't know how to finish by testing for nulls, assuming that the rest of the code is correct.

+2  A: 

Hello,

Gettingn the value works this way:

object value = propertyInfo.GetValue(instance, null);

if (value == null)
   //Null value
else if (DBNull.Value.Equals(value))
   //DB Null
Brian
+1 - you might also want to add exception handling in your GetValue call as the callee might implement a custom getter that could yield an exception.
Florian Doyon
It worked perfectly, thanks. If anyone else needs this note that there's an error in the code I posted with the question. To check for the custom attribute I had to iterate between all the attributes to find the one I was looking for.
RobSullivan