namespace YooAsset { public class AssetInfo { private readonly PatchAsset _patchAsset; private string _providerGUID; /// <summary> /// 唯一标识符 /// </summary> internal string GUID { get { if (string.IsNullOrEmpty(_providerGUID) == false) return _providerGUID; if (AssetType == null) _providerGUID = $"{AssetPath}[null]"; else _providerGUID = $"{AssetPath}[{AssetType.Name}]"; return _providerGUID; } } /// <summary> /// 身份是否无效 /// </summary> internal bool IsInvalid { get { return _patchAsset == null; } } /// <summary> /// 错误信息 /// </summary> internal string Error { private set; get; } /// <summary> /// 可寻址地址 /// </summary> public string Address { private set; get; } /// <summary> /// 资源路径 /// </summary> public string AssetPath { private set; get; } /// <summary> /// 资源类型 /// </summary> public System.Type AssetType { private set; get; } // 注意:这是一个内部类,严格限制外部创建。 private AssetInfo() { } internal AssetInfo(PatchAsset patchAsset, System.Type assetType) { if (patchAsset == null) throw new System.Exception("Should never get here !"); _patchAsset = patchAsset; AssetType = assetType; Address = patchAsset.Address; AssetPath = patchAsset.AssetPath; Error = string.Empty; } internal AssetInfo(PatchAsset patchAsset) { if (patchAsset == null) throw new System.Exception("Should never get here !"); _patchAsset = patchAsset; AssetType = null; Address = patchAsset.Address; AssetPath = patchAsset.AssetPath; Error = string.Empty; } internal AssetInfo(string error) { _patchAsset = null; AssetType = null; Address = string.Empty; AssetPath = string.Empty; Error = error; } } }