<p>i have a class with a static public property called "Info". 
via reflection i want to get this properties value, so i call:</p>

<pre><code>PropertyInfo pi myType.GetProperty("Info");
string info = (string) pi.GetValue(null, null);
</code></pre>

<p>this works fine as long as the property is of type string. but actually my property is of type IPluginInfo and a PluginInfo type (implementing IPluginInfo) is instatiated and returned in the Info properties get accessor, like this:</p>

<pre><code>public static IPluginInfo PluginInfo
{
    get 
    {
        IPluginInfo Info = new PluginInfo();
        Info.Name = "PluginName";
        Info.Version = "PluginVersion";
        return Info;
    }
}
</code></pre>

<p>like this when i call:</p>

<pre><code>IPluginInfo info = pi.GetValue(null, null) as IPluginInfo;
</code></pre>

<p>info is always null, whiel PropertyInfo pi is still valid. am i missing something obvious here?</p>

Could you create a short but complete program that demonstrates the problem?
Given that you're talking about plugins, my
guess
is that you've got the problem of having IPluginInfo defined in two different assemblies. See if
this article
helps at all.
The easiest way to verify it is to call
```
pi.GetValue
```
and store the result in an
```
object
```
variable first, then do the cast or "as" in another line. That way you can break the debugger and look at the return value before it's lost.