簡體   English   中英

盡管存在並且已加載此類型,但無法通過全名獲取類型

[英]Cannot get type by full name despite this type exists and is loaded

奇怪的問題,我得到System.TypeLoadException“無法加載類型'顏色'”:

using UnityEngine;

Type.GetType(typeof(Color).FullName, true);

當然,我不能只使用typeof(Color) ,代碼證明此類型存在並已加載並且其名稱正確。

typeof(Color).FullName ==“ UnityEngine.Color”。

我也嘗試過:

typeof(Color).Module.GetTypes().First(t => t.Name == "Color")

工作正常,但是

typeof(Color).Module.GetType("Color", true, false)

拋出TypeLoadException 因此,我得出的結論是,這不是“完全合格的名稱”問題,而是其他問題。

我還嘗試了UnityEngine程序集和另一個3rd-party程序集的其他類型。

我檢查了Mono的源代碼,但是相關的代碼在C實現中,很難快速理解。

Type.FullName不包含程序集-因此,除非類型在調用程序集或mscorlib ,否則將找不到該類型。

基本上,如果您嘗試從任意程序集中加載類型,則有兩個簡單的選項:

  • Type.GetType()使用程序集限定名稱
  • 使用Assembly.GetType

如果您在編譯時知道同一程序集中的另一種類型,則通常最簡單的使用方法是:

Type type = typeof(KnownType).Assembly.GetType("Qualified.UnknownType");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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