i wrote some code to get all classes implementing an Interface.
private static List<ClassNameController> getClassesByInheritInterface(Type interfaceName)
{
        var types = AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(s => s.GetTypes())
            .Where(p => interfaceName.IsAssignableFrom(p) && !p.IsInterface);
        List<ClassNameController> myControllerList = new List<ClassNameController>();
        foreach (System.Type type in types)
        {
            // Get a PropertyInfo of specific property type(T).GetProperty(....)
            PropertyInfo propertyInfo;
            propertyInfo = type
                .GetProperty("className", BindingFlags.Public | BindingFlags.Static);
            // Use the PropertyInfo to retrieve the value from the type by not passing in an instance
            object value = propertyInfo.GetValue(null, null);
            // Cast the value to the desired type
            string typedValue = (string)value;
            myControllerList.Add(new ClassNameController(typedValue, type));
        }
        return myControllerList;
    }
}
All of these classes got a public static string className Property. The Value of this Property I use to create an ClassNameController Instance
class ClassNameController
{
    public string Name { get; set; }
    public System.Type ObjectType { get; set; }
    public ClassNameController(string name, Type objectType)
    {
        this.Name = name;
        this.ObjectType = objectType;
    }
    public override string ToString()
    {
        return Name;
    }
}
But when i start my Program it crashes at
object value = propertyInfo.GetValue(null, null);
with the error message
System.NullReferenceException.
Question: So why cant he find the Property Classname?
Edit: All Classes are implementing these interfaces are WPF UserControls. For example IModuleview:
  internal interface IModuleView
{
    void updateShownInformation();
    void setLanguageSpecificStrings();
}
And here an example of a Module:
   public partial class DateBox : UserControl, IModuleView
{
    public static string className = "Datebox";
    public DateBox()
    {
        InitializeComponent();
    }
    public void setLanguageSpecificStrings()
    {
        this.ToolTip = DateTime.Now.ToString("dddd, dd.MM.yy");
    }
    public void updateShownInformation()
    {
        tbDate.Text = DateTime.Now.ToString("ddd-dd");
    }
}
 
     
    