0

Любая идея о том, как это сделать в переносном классе? 't', похоже, не имеет IsInterface или IsAbstract, и у Type нет IsAssignableFrom.Использование активатора для получения экземпляра из интерфейса в проекте портативного класса

Я пытаюсь активировать экземпляр из интерфейса внутри портативного проекта библиотеки классов, поэтому я могу использовать его внутри Xamarin.

Я попробовал этот код из this question, но он не работает, как много вещей не существует в портативных проектах

Кода от вопроса:

Type[] iLoadTypes = (from t in Assembly.Load("ClassLibrary1").GetExportedTypes() 
       where !t.IsInterface && !t.IsAbstract 
       where typeof(ILoad).IsAssignableFrom(t) 
       select t).ToArray(); 

Благодарности

ответ

1

переносимая библиотека классов имеет некоторые обновления в классах Assembly и Type. Вот код, необходимый для того, чтобы сделать то, что вы хотели в проекте портативного класса.

Type[] interfaceTypes = (from t in Assembly.Load(new AssemblyName("DependencyInjectionClient")).ExportedTypes 
              where !t.GetTypeInfo().IsInterface && !t.GetTypeInfo().IsAbstract 
              where typeof(T).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()) 
              select t).ToArray(); 

информация вам нужна была перенесена в TypeInfo класса.

Ответ был найден из this question и this question которая привела к this post