簡體   English   中英

僅在Windows Store App中從全限定名獲取類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM