[英]Get Type from Fully qualified name only in Windows Store App
我有一個包含完整合格名稱的字符串,例如MyNamespace.MyType
,我知道它在已加載的程序集中。
我需要在Windows應用商店中獲取Type
實例。
我遇到的問題是,盡管Windows應用商店中有一些反射類,但是它非常有限,而且我根本無法使用桌面應用中一直使用的東西。
如果可以獲取程序集,則可以在其中找到我的類型,因此我目前正在嘗試獲取所有已加載的程序集,由於AppDomain
不存在,因此我不容易做到。
我發現以下內容:
private async System.Threading.Tasks.Task<IEnumerable<Assembly>> GetAssembliesCore()
{
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
List<Assembly> assemblies = new List<Assembly>();
foreach (Windows.Storage.StorageFile file in
await folder.GetFilesAsync().AsTask().ConfigureAwait(false))
{
if (file.FileType == ".dll")
{
AssemblyName name = new AssemblyName() { Name = file.Name };
Assembly asm = Assembly.Load(name);
assemblies.Add(asm);
}
}
return assemblies;
}
我添加了.AsTask().ConfigureAwait(false)
以使其停止掛起,但現在嘗試加載程序集失敗:
“無法加載文件或程序集'FDE.Audio.dll'或其依賴項之一。
系統找不到指定的文件。“:”“ FDE.Audio.dll”
清單中是否需要設置某些內容? 還有嗎
如何在程序的文件夾(我認為是AppX
)中加載程序集?
嘗試提取不帶擴展名的文件名
var filename = file.Name.Substring(0, file.Name.Length - file.FileType.Length);
AssemblyName name = new AssemblyName() { Name = filename };
Assembly asm = Assembly.Load(name);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.