lundi 15 février 2016

How to find a type that is not loaded yet in AppDomain?

I'm developing modular application using WPF and Prism.
All my UserControls have separate assemblies and implement IUserControl interface.
I would like to list all Types which implement IUserControl interface form a loaded module library in this way;

//ModuleA.cs
var interfaceType = typeof(IUserControl);
var userControlTypes = AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(s => s.GetTypes())
            .Where(p => interfaceType.IsAssignableFrom(p) && p.IsClass);

But I cannot see all UserControl types implementing IUserControl in userControlTypes list.
When I use the all classes that implements IUserControl in Bootstrapper.cs like in the following;

var userControlTypes = new List<Type>()
{ 
      {typeof(HastaKayitControl)},
      {typeof(ViziteUserControl)},
      {typeof(DenemeUserControl)},
      ...
};

I can get all desired UserControls from the list just I wrote above(userControlTypes).
What is the reason behind this?

FYI:

  • All assemblies target the same .NET framework version.
  • My Prism version is 6.1.0
  • I will use userControlTypes to show all UserControl types inside the application to the end-user.
  • IUserControl interface contains nothing.




Aucun commentaire:

Enregistrer un commentaire