Można używać haków Platforma:
W swojej przenośnej biblioteki:
using System.Collections.Generic;
namespace PCL {
public interface IAppDomain {
IList<IAssembly> GetAssemblies();
}
public interface IAssembly {
string GetName();
}
public class AppDomainWrapper {
public static IAppDomain Instance { get; set; }
}
}
i można z nich korzystać (w przenośnej biblioteki) jak:
AppDomainWrapper.Instance.GetAssemblies();
W swojej platformy systemowej zależna aplikacja, którą musisz wdrożyć:
public class AppDomainWrapperInstance : IAppDomain {
IList<IAssembly> GetAssemblies() {
var result = new List<IAssembly>();
foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) {
result.Add(new AssemblyWrapper(assembly));
}
return result;
}
}
public class AssemblyWrapper : IAssembly {
private Assembly m_Assembly;
public AssemblyWrapper(Assembly assembly) {
m_Assembly = assembly;
}
public string GetName() {
return m_Assembly.GetName().ToString();
}
}
i bootstrap to
AppDomainWrapper.Instance = new AppDomainWrapperInstance();
Będziesz musiał pracować z tym, że jeśli klasa lub metoda nie jest dostępna w trybie PCL to jest * bardzo * mało prawdopodobne, że jest przenośny alternatywą. Aplikacja AppDomain nie jest dostępna na przykład w aplikacjach Silverlight i WinRT. Zapomniałeś wspomnieć o celach, które chcesz wspierać. Ale najwyraźniej nie możesz wykręcić wody z kamienia, jeśli cel, którego chcesz, nie obsługuje, to masz bibliotekę, która nie może działać. –
Czy mogę zapytać, dlaczego w pierwszej kolejności należy pobrać listę wszystkich złożeń z bieżącego elementu AppDomain z poziomu języka PCL? –
Czy możesz podać więcej informacji? Z tego, co widziałem, wyciąganie bieżących złożeń z bieżącego AppDomain powoduje założenie, że wszystkie złożenia w danej aplikacji zostały już załadowane. –