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