diff --git a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs b/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs deleted file mode 100644 index de638e0d1..000000000 --- a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Collections; -using CatLib; -using UnityEngine; -using Application = CatLib.Application; -using IServiceProvider = CatLib.IServiceProvider; - -namespace QFramework.Example -{ - public class CatlibExample : MonoBehaviour - { - // Use this for initialization - private IEnumerator Start() - { - var application = new Application(); - application.Bootstrap(); - application.Register(new FileSystemProvider()); - application.Init(); - - yield return new WaitForEndOfFrame(); - - App.Make().HelloWorld(); - } - - - public interface IFileSystem - { - void HelloWorld(); - } - - public class FileSystem : IFileSystem - { - public void HelloWorld() - { - "HelloWorld".LogInfo(); - } - } - - public class FileSystemProvider : IServiceProvider - { - public void Init() - { - } - - public void Register() - { - App.Singleton(); - } - } - } -} \ No newline at end of file diff --git a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity b/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity deleted file mode 100644 index b88425291..000000000 --- a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity +++ /dev/null @@ -1,208 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 8 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 9 - m_Resolution: 2 - m_BakeResolution: 40 - m_TextureWidth: 1024 - m_TextureHeight: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &132906102 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 132906106} - - component: {fileID: 132906105} - - component: {fileID: 132906104} - - component: {fileID: 132906103} - - component: {fileID: 132906107} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &132906103 -AudioListener: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 132906102} - m_Enabled: 1 ---- !u!124 &132906104 -Behaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 132906102} - m_Enabled: 1 ---- !u!20 &132906105 -Camera: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 132906102} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &132906106 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 132906102} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &132906107 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 132906102} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ae15caf1e303ff54a8421c19e63fe11c, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/QFramework/Example/LibsExample/CatlibExample.meta b/Assets/QFramework/Example/LibsExample/IOCExample.meta similarity index 70% rename from Assets/QFramework/Example/LibsExample/CatlibExample.meta rename to Assets/QFramework/Example/LibsExample/IOCExample.meta index ad4c08389..afb15d402 100644 --- a/Assets/QFramework/Example/LibsExample/CatlibExample.meta +++ b/Assets/QFramework/Example/LibsExample/IOCExample.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: b25baba2c4d642743a71a12bb6ef3e7e +guid: 6fed2673a33e18f44b5f2b077e899893 folderAsset: yes -timeCreated: 1548036658 +timeCreated: 1548498518 licenseType: Free DefaultImporter: externalObjects: {} diff --git a/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs new file mode 100644 index 000000000..60ae81119 --- /dev/null +++ b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace QFramework.Example +{ + public class InjectExample : MonoBehaviour + { + [Inject] public A AObj; + + // Use this for initialization + void Start() + { + var container = new QFrameworkContainer(); + container.RegisterInstance(new A()); + container.Inject(this); + + container.Resolve().HelloWorld(); + } + + + public class A + { + public void HelloWorld() + { + "This is A obj".LogInfo(); + } + } + } +} \ No newline at end of file diff --git a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs.meta b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs.meta similarity index 77% rename from Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs.meta rename to Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs.meta index 6144c4c86..0c5ffed78 100644 --- a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.cs.meta +++ b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: ae15caf1e303ff54a8421c19e63fe11c -timeCreated: 1548036700 +guid: b4e7a0e04a103334fbe890e850c67cea +timeCreated: 1548498551 licenseType: Free MonoImporter: externalObjects: {} diff --git a/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity new file mode 100644 index 000000000..1be878c46 Binary files /dev/null and b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity differ diff --git a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity.meta b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity.meta similarity index 68% rename from Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity.meta rename to Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity.meta index c74e0aa2e..d8cc40e3a 100644 --- a/Assets/QFramework/Example/LibsExample/CatlibExample/CatlibExample.unity.meta +++ b/Assets/QFramework/Example/LibsExample/IOCExample/InjectExample.unity.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 0c8859127b4a32142ac824000edef145 -timeCreated: 1548036675 +guid: e16a0dae3ee99b64dac35bde781d3a98 +timeCreated: 1548498524 licenseType: Free DefaultImporter: externalObjects: {} diff --git a/Assets/QFramework/Example/PackageVersion.json b/Assets/QFramework/Example/PackageVersion.json index 7c42be41b..59e7218a2 100755 --- a/Assets/QFramework/Example/PackageVersion.json +++ b/Assets/QFramework/Example/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.40", + "Version": "v0.0.42", "Type": 0, "AccessRight": 0, "DownloadUrl": null, "InstallPath": "Assets/QFramework/Example/", "Readme": { - "version": "v0.0.40", - "content": "support 5.6", + "version": "v0.0.42", + "content": "add IOC Example", "author": "liangxie", - "date": "2019 年 01 月 25 日 12:39" + "date": "2019 年 01 月 26 日 18:32" }, "Name": "Example", - "VersionNumber": 40, - "FileName": "Example_v0.0.40.unitypackage" + "VersionNumber": 42, + "FileName": "Example_v0.0.42.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/GetAllRemotePackageInfo.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/GetAllRemotePackageInfo.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/GetAllRemotePackageInfo.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/GetAllRemotePackageInfo.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/GetAllRemotePackageInfo.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/GetAllRemotePackageInfo.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/GetAllRemotePackageInfo.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/GetAllRemotePackageInfo.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/InstallPackage.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/InstallPackage.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/InstallPackage.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/InstallPackage.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/InstallPackage.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/InstallPackage.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/InstallPackage.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/InstallPackage.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/UploadPackage.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/UploadPackage.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/UploadPackage.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/UploadPackage.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/UploadPackage.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/UploadPackage.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Actions/UploadPackage.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Actions/UploadPackage.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/DocsWindow.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/DocsWindow.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/DocsWindow.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/DocsWindow.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/DocsWindow.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/DocsWindow.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/DocsWindow.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/DocsWindow.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/FrameworkVersionInfo.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/FrameworkVersionInfo.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/FrameworkVersionInfo.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/FrameworkVersionInfo.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/FrameworkVersionInfo.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/FrameworkVersionInfo.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/FrameworkVersionInfo.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/FrameworkVersionInfo.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/PackageData.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/PackageData.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/PackageData.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/PackageData.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/PackageData.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/PackageData.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/PackageData.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/PackageData.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/Readme.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/Readme.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/Readme.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/Readme.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/Readme.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/Readme.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/Readme.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/Readme.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/ReleaseItem.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/ReleaseItem.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/ReleaseItem.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/ReleaseItem.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/ReleaseItem.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/ReleaseItem.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/Info/ReleaseItem.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/Info/ReleaseItem.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/InstalledPackageVersions.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/InstalledPackageVersions.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/InstalledPackageVersions.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/InstalledPackageVersions.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/InstalledPackageVersions.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/InstalledPackageVersions.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/InstalledPackageVersions.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/InstalledPackageVersions.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/PackageCheck.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageCheck.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/PackageCheck.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageCheck.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/PackageCheck.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageCheck.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/PackageCheck.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageCheck.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/ReadmeWindow.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/ReadmeWindow.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/ReadmeWindow.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/ReadmeWindow.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/ReadmeWindow.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/ReadmeWindow.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/ReadmeWindow.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/ReadmeWindow.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI.meta diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI/FrameworkPMView.cs b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI/FrameworkPMView.cs similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI/FrameworkPMView.cs rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI/FrameworkPMView.cs diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI/FrameworkPMView.cs.meta b/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI/FrameworkPMView.cs.meta similarity index 100% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager/UI/FrameworkPMView.cs.meta rename to Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/UI/FrameworkPMView.cs.meta diff --git a/Assets/QFramework/Framework/0.Core/PackageVersion.json b/Assets/QFramework/Framework/0.Core/PackageVersion.json index b021d2e56..2f53e52b1 100644 --- a/Assets/QFramework/Framework/0.Core/PackageVersion.json +++ b/Assets/QFramework/Framework/0.Core/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.5", + "Version": "v0.1.0", "Type": 0, "AccessRight": 0, "DownloadUrl": null, "InstallPath": "Assets/QFramework/Framework/0.Core/", "Readme": { - "version": "v0.0.5", - "content": "support 5.6", + "version": "v0.1.0", + "content": "import uFrame's IOC Solution", "author": "liangxie", - "date": "2019 年 01 月 25 日 12:40" + "date": "2019 年 01 月 26 日 18:27" }, "Name": "0.Core", - "VersionNumber": 5, - "FileName": "0.Core_v0.0.5.unitypackage" + "VersionNumber": 100, + "FileName": "0.Core_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE deleted file mode 100644 index 3b5d547e5..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 CatLib - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE.meta deleted file mode 100644 index 430339020..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/LICENSE.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 12fb300909d21e3419e117376a563c7d -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md deleted file mode 100644 index e8d7a0c96..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md +++ /dev/null @@ -1,60 +0,0 @@ -

- -

- - - - - Codecov - - - Downloads - -

- -> We are currently preparing to convert the comments in the code to the English version. We look forward to your joining. - -## 关于CatLib - -`CatLib Core` 是 `CatLib` 的最小可用框架。仅提供最基础的功能,是其他框架开发者作为基础的理想选择。 - -- [服务提供者](https://catlib.io/v1/architecture/service-provider.html) -- [CatLib核心](https://catlib.io/v1/architecture/application.html) -- [依赖注入容器](https://catlib.io/v1/architecture/container.html). -- [服务门面](https://catlib.io/v1/architecture/facade.html). - -## 安装CatLib Core - -**使用Nuget安装** - -```PM -Install-Package CatLib.Core -Version 1.3.1 -``` - -**直接下载发布版本** - -下载[最新版本](https://github.com/CatLib/Core/releases)。 - -## 文档 - -您只需要进入 [中文文档](https://catlib.io) 就可以看到她们。 - -## 项目开发计划 - -CatLib一直都在建立新的组件来降低开发者的工作量,进入 [CatLib 开发计划](https://www.teambition.com/project/589ce998907a7b661c86de9c/tasks/scrum/589ce9aadf254b9870a7ac90) 来了解未来的开发序列。 - -## 贡献 - -CatLib还是一个年轻的框架,她的成长和你们的贡献是分不开的,如果您想要为项目进行贡献请参考: [CatLib 贡献文档](https://catlib.io/v1/contribution.html) 您的贡献将会被列入贡献者名单,我们欢迎任何形式的Pull Request! - -issues 不仅仅只是用于bug跟踪 , 如果您有好的意见或者想法,也欢迎创建 issues 一起讨论。 - -## 授权 - -CatLib使用的开源许可是:[MIT license](http://opensource.org/licenses/MIT). - -## 技术支持 - -* QQ群: 150371044 (验证: CatLib Support) -* email: support@catlib.io -* slack: [catlib.slack](https://catlib.slack.com/messages/internals/) diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md.meta deleted file mode 100644 index 507d8a96c..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a6bfd27d90436a547a1430f9acca5065 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml deleted file mode 100644 index 9cc07f512..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml.meta deleted file mode 100644 index 95a71bb6b..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/link.xml.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a359ade40ada84445855abf7124b9f09 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll deleted file mode 100644 index 3e2da898c..000000000 Binary files a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll and /dev/null differ diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb deleted file mode 100644 index 6db645b1f..000000000 Binary files a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb and /dev/null differ diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb.meta deleted file mode 100644 index 34b57e82a..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.mdb.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2bdf572621362674b9ee8773f5566e56 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.meta deleted file mode 100644 index 198478f10..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.dll.meta +++ /dev/null @@ -1,32 +0,0 @@ -fileFormatVersion: 2 -guid: edb61e59cbd5fda42b3ddcc5326f776d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb deleted file mode 100644 index c7ac3d44f..000000000 Binary files a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb and /dev/null differ diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb.meta deleted file mode 100644 index 27a880407..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.pdb.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 65cf185faf0fb3842b1c8ed000069b3a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml deleted file mode 100644 index be328841b..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml +++ /dev/null @@ -1,8740 +0,0 @@ - - - - CatLib.Core - - - - - CatLib实例 - - - - - 当新建Application时 - - - - - 当新建Application时 - - - - - CatLib实例 - - - - - CatLib实例 - - - - - 是否拥有全局CatLib实例 - - - - - 终止CatLib框架 - - - - - 注册服务提供者 - - 服务提供者 - - - - 服务提供者是否已经注册过 - - 服务提供者 - 服务提供者是否已经注册过 - - - - 获取运行时唯一Id - - 运行时的唯一Id - - - - 是否是主线程 - - - - - CatLib版本(遵循semver) - - - - - 比较CatLib版本(遵循semver) - 输入版本大于当前版本则返回-1 - 输入版本等于当前版本则返回0 - 输入版本小于当前版本则返回1 - - 主版本号 - 次版本号 - 修订版本号 - 比较结果 - - - - 比较CatLib版本(遵循semver) - 输入版本大于当前版本则返回-1 - 输入版本等于当前版本则返回0 - 输入版本小于当前版本则返回1 - - 版本号 - 比较结果 - - - - 获取优先级,如果存在方法优先级定义那么优先返回方法的优先级 - 如果不存在优先级定义那么返回int.MaxValue - - 获取优先级的类型 - 获取优先级的调用方法 - 优先级 - - - - 调试等级 - - - - - 判断给定事件是否存在事件监听器 - - 事件名 - - 严格模式 - 启用严格模式则不使用正则来进行匹配事件监听器 - - 是否存在事件监听器 - - - - 触发一个事件,并获取事件的返回结果 - - 事件名称 - 载荷 - 事件结果 - - - - 触发一个事件,遇到第一个事件存在处理结果后终止,并获取事件的返回结果 - - 事件名 - 载荷 - 事件结果 - - - - 注册一个事件监听器 - - 事件名称 - 事件调用目标 - 事件处理方法 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件调用方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 解除注册的事件监听器 - - - 事件解除目标 - 如果传入的是字符串(string)将会解除对应事件名的所有事件 - 如果传入的是事件对象(IEvent)那么解除对应事件 - 如果传入的是其他实例(object)会解除该实例下的所有事件 - - - - - 获取服务的绑定数据,如果绑定不存在则返回null - - 服务名或者别名 - 服务绑定数据或者null - - - - 是否已经绑定了服务 - - 服务名或者别名 - 返回一个bool值代表服务是否被绑定 - - - - 是否已经实例静态化 - - 服务名或别名 - 是否已经静态化 - - - - 服务是否已经被解决过 - - 服务名 - 是否已经被解决过 - - - - 是否可以生成服务 - - 服务名或者别名 - 是否可以生成服务 - - - - 服务是否是静态化的,如果服务不存在也将返回false - - 服务名或者别名 - 是否是静态化的 - - - - 是否是别名 - - 名字 - 是否是别名 - - - - 绑定一个服务 - - 服务名 - 服务实现 - 服务是否静态化 - 服务绑定数据 - - - - 绑定一个服务 - - 服务名 - 服务实体 - 服务是否静态化 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 服务绑定数据 - - - - 绑定一个方法到容器 - - 方法名 - 调用目标 - 调用方法 - 方法绑定数据 - - - - 解除绑定的方法 - - - 解除目标 - 如果为字符串则作为调用方法名 - 如果为IMethodBind则作为指定方法 - 如果为其他对象则作为调用目标做全体解除 - - - - - 解除绑定服务 - - 服务名或者别名 - - - - 为一个及以上的服务定义一个标记 - - 标记名 - 服务名 - - - - 根据标记名生成标记所对应的所有服务实例 - - 标记名 - 将会返回标记所对应的所有服务实例 - - - - 静态化一个服务 - - 服务名或者别名 - 服务实例 - - - - 释放某个静态化实例 - - 服务名或别名 - - - - 调用一个已经被绑定的方法 - - 方法名 - 用户提供的参数 - 调用结果 - - - - 以依赖注入形式调用一个方法 - - 方法对象 - 方法信息 - 用户传入的参数 - 方法返回值 - - - - 构造服务 - - 服务名或别名 - 用户传入的参数 - 服务实例,如果构造失败那么返回null - - - - 获取一个回调,当执行回调可以生成指定的服务 - - 服务名或别名 - 用户提供的参数 - 回调方案 - - - - 为服务设定一个别名 - - 别名 - 映射到的服务名 - 当前容器对象 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务名 - 闭包 - - - - 当服务被解决时触发的事件 - - 闭包函数 - 当前容器实例 - - - - 当静态服务被释放时 - - 处理释放时的回调 - - - - 当服务被解决事件之后的回调 - - 闭包 - 当前容器 - - - - 当查找类型无法找到时会尝试去调用开发者提供的查找类型函数 - - 查找类型的回调 - 查询优先级(值越小越优先) - 当前容器实例 - - - - 当一个已经被解决的服务,发生重定义时触发 - - 服务名 - 回调 - 服务容器 - - - - 在回调区间内暂时性的静态化服务实例 - - 回调区间 - 服务映射 - - - - 类型转为服务名 - - 类型 - 转换后的服务名 - - - - 获取服务的绑定数据,如果绑定不存在则返回null - - 服务名 - 服务绑定数据或者null - - - - 是否已经实例静态化 - - 服务名 - 是否已经静态化 - - - - 服务是否已经被解决过 - - 服务名 - 是否已经被解决过 - - - - 是否已经绑定了服务 - - 服务名 - 代表服务是否被绑定 - - - - 是否可以生成服务 - - 服务名 - 服务是否可以被构建 - - - - 服务是否是静态化的,如果服务不存在也将返回false - - 服务名 - 服务是否是静态化的 - - - - 是否是别名 - - 服务名 - 是否是别名 - - - - 为服务设定一个别名 - - 别名 - 服务名 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务名 - 闭包 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 闭包 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 闭包 - - - - 扩展容器中的全部服务 - 如果构建的实例符合指定的类型或者接口,那么触发扩展闭包 - - 实现的类型或接口 - 闭包 - - - - 扩展容器中的全部服务 - 如果构建的实例符合指定的类型或者接口,那么触发扩展闭包 - - 实现的类型或接口 - 闭包 - - - - 常规绑定一个服务 - - 服务名,同时也是服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名,同时也是服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名,同时也是服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名,同时也是服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 绑定一个方法到容器 - - 方法名 - 调用目标 - 调用方法 - - - - 绑定一个方法到容器 - - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 方法名 - 调用方法 - - - - 解除服务绑定 - - 解除绑定的服务 - - - - 为一个服务定义一个标记 - - 服务 - 标记名 - - - - 静态化一个服务,实例值会经过解决修饰器 - - 服务名 - 实例值 - - - - 释放服务 - - 服务名 - - - - 根据实例对象释放静态化实例 - - 需要释放静态化实例对象 - 以相反的顺序释放实例 - 只要有一个没有释放成功那么返回false,为没有释放掉的实例 - - - - 以依赖注入形式调用一个方法 - - 方法对象 - 方法名 - 用户传入的参数 - 方法返回值 - - - - 以依赖注入的形式调用一个方法 - - 方法 - 用户传入的参数 - - - - 以依赖注入的形式调用一个方法 - - 方法 - 用户传入的参数 - - - - 以依赖注入的形式调用一个方法 - - 方法 - 用户传入的参数 - - - - 以依赖注入的形式调用一个方法 - - 方法 - 用户传入的参数 - - - - 包装一个依赖注入形式调用的一个方法 - - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 方法 - 用户传入的参数 - 包装方法 - - - - 构造一个服务 - - 服务名 - 用户参数 - 服务实例 - - - - 构造一个服务 - - 服务类型 - 用户提供的参数 - 服务实例 - - - - 获取一个回调,当执行回调可以生成指定的服务 - - 服务名 - 回调方案 - - - - 当静态服务被释放时 - - 处理释放时的回调 - 当前容器实例 - - - - 当静态服务被释放时 - - 处理释放时的回调 - 当前容器实例 - - - - 当静态服务被释放时 - - 处理释放时的回调 - 当前容器实例 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - - 回调函数 - 当前容器对象 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - - 回调函数 - 当前容器对象 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - - 回调函数 - 当前容器对象 - - - - 当服务被解决事件之后的回调 - - 闭包 - 当前容器 - - - - 当服务被解决事件之后的回调 - - 筛选条件 - 闭包 - 当前容器 - - - - 当服务被解决事件之后的回调 - - 筛选条件 - 闭包 - 当前容器 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - - 服务名 - 回调 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - - 服务名 - 回调 - - - - 在回调区间内暂时性的静态化服务实例 - - 回调区间 - 服务名 - 实例名 - - - - 类型转为服务名 - - 服务类型 - 服务名 - - - - CatLib程序 - - - - - 版本号 - - - - - 框架启动流程 - - - - - 构建阶段 - - - - - 引导流程之前 - - - - - 引导流程进行中 - - - - - 引导流程结束之后 - - - - - 初始化开始之前 - - - - - 初始化中 - - - - - 初始化完成后 - - - - - 框架运行中 - - - - - 框架终止之前 - - - - - 框架终止进行中 - - - - - 框架终止之后 - - - - - 服务提供者 - - - - - 注册服务提供者 - - - - - 是否已经完成引导程序 - - - - - 是否已经完成初始化 - - - - - 是否正在注册中 - - - - - 启动流程 - - - - - 增量Id - - - - - 主线程ID - - - - - 是否是主线程 - - - - - 事件系统 - - - - - 事件系统 - - - - - 调试等级 - - - - - 构建一个CatLib实例 - - 是否将当前实例应用到全局 - - - - 构建一个新的Application实例 - - 是否将当前实例应用到全局 - Application实例 - - - - 终止CatLib框架 - - - - - 引导程序 - - 引导程序 - CatLib实例 - 当引导类型为null时引发 - - - - 初始化 - - - - - 初始化 - - 没有调用Bootstrap(...)就尝试初始化时触发 - - - - 注册服务提供者 - - 注册服务提供者 - 服务提供者被重复注册时触发 - - - - 注册服务提供者 - - 注册服务提供者 - 服务提供者被重复注册时触发 - - - - 增加到排序列表 - - 列表 - 需要插入的记录 - 优先级函数 - - - - 初始化服务提供者 - - 服务提供者 - - - - 服务提供者是否已经注册过 - - 服务提供者 - 服务提供者是否已经注册过 - - - - 获取运行时唯一Id - - 应用程序内唯一id - - - - 获取优先级 - - 识别的类型 - 识别的方法 - 优先级 - - - - 调试等级 - - - - - 触发一个事件,并获取事件的返回结果 - - 事件名称 - 载荷 - 事件结果 - - - - 触发一个事件,遇到第一个事件存在处理结果后终止,并获取事件的返回结果 - - 事件名 - 载荷 - 事件结果 - - - - 判断给定事件是否存在事件监听器 - - 事件名 - - 严格模式 - 启用严格模式则不使用正则来进行匹配事件监听器 - - 是否存在事件监听器 - - - - 注册一个事件监听器 - - 事件名称 - 事件调用方法 - 事件分组 - 事件对象 - - - - 解除注册的事件监听器 - - - 事件解除目标 - 如果传入的是字符串(string)将会解除对应事件名的所有事件 - 如果传入的是事件对象(IEvent)那么解除对应事件 - 如果传入的是其他实例(object)会解除该实例下的所有事件 - - - - - CatLib版本(遵循semver) - - - - - 比较CatLib版本(遵循semver) - 输入版本大于当前版本则返回-1 - 输入版本等于当前版本则返回0 - 输入版本小于当前版本则返回1 - - 主版本号 - 次版本号 - 修订版本号 - 比较结果 - - - - 比较CatLib版本(遵循semver) - 输入版本大于当前版本则返回-1 - 输入版本等于当前版本则返回0 - 输入版本小于当前版本则返回1 - - 版本号 - 比较结果 - - - - 验证构建状态 - - 函数名 - - - - 启动迭代器 - - 迭代程序 - - - - 注册核心别名 - - - - - 注册核心服务 - - - - - 获取服务提供者基础类型 - - 服务提供者 - 基础类型 - - - - 应用程序事件 - - - - - 当引导程序开始之前 - - - - - 当引导程序进行中 - - - - - 当引导完成时 - - - - - 当注册服务提供者 - - - - - 当初始化开始之前 - - - - - 当服务提供者初始化进行前 - - - - - 当服务提供者初始化结束后 - - - - - 当初始化完成之后 - - - - - 当程序启动完成 - - - - - 当程序终止之前 - - - - - 当程序终止之后 - - - - - 调试等级 - - - - - 生产环境 - - - - - 仿真环境 - - - - - 开发者模式 - - - - - 全局事件系统 - - - - - 依赖解决器 - - - - - 构建一个新的全局事件系统实例 - - 依赖解决器 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 全局事件系统 - - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 原始调度器 - - - - - 原始调度器 - - - - - 门面 - - - - - 实例 - - - - - 绑定数据 - - - - - 是否已经被初始化 - - - - - 服务名 - - - - - 是否被释放 - - - - - 门面静态构造 - - - - - 门面实例 - - - - - 是否拥有门面实例 - 如果为非静态绑定那么永远返回false - 门面实例判断不能代替:Container.HasInstance - - - - - 构建一个服务实例 - - 用户参数 - 服务实例 - - - - 构建一个服务 - - - - - 当服务被释放时 - - 旧的绑定器 - 忽略的参数 - - - - 当服务被重绑定时 - - 新的服务实例 - - - - 重新绑定 - - 新的Binder - - - - 生成服务 - - 服务名 - 服务实例 - - - - 管理器模版 - - 主服务接口 - 扩展类型接口 - - - - 当扩展被构建时 - - - - - 当扩展被构建时之后 - - - - - 自定义一个扩展构建器 - - 扩展构建器 - 扩展名 - - - - 释放指定扩展的构建器 - - 扩展名 - - - - 是否包含指定扩展构建器 - - 扩展名 - - - - 管理器模版 - - 主服务接口 - 扩展类型接口 - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 管理器模版 - - 主服务接口 - 扩展类型接口 - - - - 当释放时 - - - - - 释放指定的扩展实现 - - 扩展名 - - - - 是否包含指定的扩展实现 - - 扩展名 - 是否包含扩展实现 - - - - 管理器模版 - - 主服务接口 - 扩展类型接口 - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 默认的扩展实现 - - - - - 应用程序接口 - - - - - 注册服务提供者 - - 服务提供者 - - - - 服务提供者是否已经注册过 - - 服务提供者 - 服务提供者是否已经注册过 - - - - 获取程序运行时唯一Id - - 运行时的唯一Id - - - - 是否是主线程 - - - - - 获取优先级,如果存在方法优先级定义那么优先返回方法的优先级 - 如果不存在优先级定义那么返回int.MaxValue - - 获取优先级的类型 - 获取优先级的调用方法 - 优先级 - - - - 调试等级 - - - - - 终止CatLib框架 - - - - - 引导程序接口 - - - - - 引导程序接口 - - - - - 协同初始化 - - - - - 服务提供者初始化 - - - - - 服务提供者 - - - - - 服务提供者初始化 - - - - - 当注册服务提供者 - - - - - 主动标志服务提供者的基础类型 - - - - - 提供者基础类型 - - - - - 基础服务提供者 - - - - - 服务提供者初始化 - - - - - 协同初始化 - - 迭代器 - - - - 当注册服务提供者 - - - - - 可绑定对象 - - - - - 当前绑定的名字 - - - - - 所属服务容器 - - - - - 父级容器 - - - - - 服务关系上下文 - 当前服务需求某个服务时可以指定给与什么服务 - - - - - 服务上下文闭包 - 当前服务需求某个服务时给定的闭包 - - - - - 同步锁 - - - - - 是否被释放 - - - - - 构建一个绑定数据 - - 依赖注入容器 - 服务名 - - - - 解除绑定 - - - - - 为服务增加上下文 - - 需求什么服务 - 给与什么服务 - 服务绑定数据 - - - - 为服务增加上下文 - - 需求什么服务 - 给与什么服务 - - - - 获取上下文的需求关系 - - 需求的服务 - 给与的服务 - - - - 获取上下文关系闭包实现 - - 需求的服务 - 给与的闭包 - - - - 解除绑定 - - - - - 守卫是否被释放 - - - - - 可绑定对象 - - - - - 给与数据 - - - - - 构建一个绑定数据 - - 依赖注入容器 - 服务名 - - - - 当需求某个服务 - - 服务名 - 绑定关系临时数据 - - - - 当需求某个服务 - - 服务类型 - 绑定关系临时数据 - - - - 绑定数据拓展 - - - - - 为服务设定一个别名 - - 别名 - 绑定数据 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 指定的类型 - 绑定数据 - 闭包 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 指定的类型 - 绑定数据 - 闭包 - 服务绑定数据 - - - - 解决服务事件之后的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 解决服务事件之后的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 解决服务事件之后的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 解决服务事件之后的回调 - - 绑定数据 - 解决事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 绑定数据 - 处理事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 绑定数据 - 处理事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 绑定数据 - 处理事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 绑定数据 - 处理事件 - 服务绑定数据 - - - - 被绑定对象 - - - - - 当前绑定的名字 - - - - - 所属服务容器 - - - - - 移除绑定 - 如果进行的是服务绑定 , 那么在解除绑定时如果是静态化物体将会触发释放 - - - - - 被绑定对象 - - - - - 当需求某个服务 - - 服务名 - 绑定关系临时数据 - - - - 当需求某个服务 - - 服务类型 - 绑定关系临时数据 - - - - 方法绑定数据 - - - - - 参数名注入表 - - - - - 获取一个参数 - - 参数名 - 参数值 - 是否成功获取 - - - - 可转变的 - 实现该接口的类,允许依赖注入容器将用户传入的基本类型(包含string)转变为目标类 - - - - - 方法绑定数据 - - - - - 方法信息 - - - - - 调用目标 - - - - - 参数表 - - - - - 方法容器 - - - - - 构建一个绑定数据 - - 方法容器 - 依赖注入容器 - 服务名 - 调用目标 - 调用方法 - - - - 解除绑定 - - - - - 方法容器 - - - - - 调用方法目标 映射到 方法名字 - - - - - 绑定数据 - - - - - 依赖注入容器 - - - - - 依赖解决器 - - - - - 同步锁 - - - - - 构建一个新的方法容器 - - - 依赖解决器 - - - - 绑定一个方法 - - 通过这个名字可以调用方法 - 方法调用目标 - 在方法调用目标中被调用的方法 - - - - - 调用方法 - - 方法名 - 用户传入的参数 - 方法调用结果 - - - - 解除绑定 - - - 解除目标 - 如果为字符串则作为调用方法名 - 如果为IMethodBind则作为指定方法 - 如果为其他对象则作为调用目标做全体解除 - - - - - 解除绑定 - - 方法绑定 - - - - 根据对象绑定移除为该对象绑定的所有方法 - - 对象信息 - - - - 清空容器的所有实例,绑定,别名,标签,解决器 - - - - - 生成一个方法没有找到异常 - - - - - - 参数名注入表 - - - - - 参数表 - - - - - 迭代器 - - 迭代器 - - - - 迭代器 - - 迭代器 - - - - 参数名注入表 - - - - - 参数名注入表 - - 参数表 - - - - 获取或者设定一个参数 - - 参数名 - 参数值 - - - - 增加一个参数 - - 参数名 - 参数值 - - - - 移除参数 - - 参数名 - - - - - 获取一个参数 - - 参数名 - 参数值 - 是否成功获取 - - - - Type类型扩展函数 - - - - - 将类型转为服务名 - - 类型 - 服务名 - - - - 未能解决异常 - - - - - 未能解决异常 - - - - - 未能解决异常 - - 异常消息 - - - - 未能解决异常 - - 异常消息 - 内部异常 - - - - 事件调度器扩展方法 - - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件调用目标 - 事件处理方法 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件调度目标 - 事件调度方法 - 事件分组 - - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 注册一个事件监听器 - - 事件调度器 - 事件名称 - 事件处理方法 - 事件分组 - 事件对象 - - - - 将调度器转为全局调度器 - - - - - - - 事件调度器 - - - - - 判断给定事件是否存在事件监听器 - - 事件名 - - 严格模式 - 启用严格模式则不使用正则来进行匹配事件监听器 - - 是否存在事件监听器 - - - - 触发一个事件,并获取事件监听器的返回结果 - - 事件名称 - 载荷 - 事件结果 - - - - 触发一个事件,遇到第一个事件存在处理结果后终止,并获取事件监听器的返回结果 - - 事件名 - 载荷 - 事件结果 - - - - 注册一个事件监听器 - - 事件名称 - 事件调用方法 - 事件分组,为Null则不进行分组 - 事件对象 - - - - 解除注册的事件监听器 - - - 事件解除目标 - 如果传入的是字符串(string)将会解除对应事件名的所有事件 - 如果传入的是事件对象(IEvent)那么解除对应事件 - 如果传入的是分组(object)会解除该分组下的所有事件 - - - - - 事件对象 - - - - - 原始事件名 - - - - - 事件分组 - - - - - 调用事件 - - 完整的事件名 - 载荷 - 事件结果 - - - - 标记的类,函数,属性不再进行覆盖率分析 - - - - - 执行优先级 - - - - - 优先级 - - - - - 优先级(0最高) - - 优先级(0为最优先) - - - - 服务绑定数据 - - - - - 服务实现,执行这个委托将会获得服务实例 - - - - - 当前绑定的服务是否是静态服务 - - - - - 服务构造修饰器 - - - - - 在服务构建修饰器之后的修饰器 - - - - - 服务构造修饰器 - - - - - 构建一个绑定数据 - - 服务父级容器 - 服务名 - 服务实现 - 服务是否是静态的 - - - - 为服务设定一个别名 - - 别名 - 服务绑定数据 - - - - 为服务打上一个标签 - - 标签名 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 解决事件 - 服务绑定数据 - - - - 解决服务时事件之后的回调 - - 解决事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 处理事件 - 服务绑定数据 - - - - 移除绑定服务 , 在解除绑定时如果是静态化物体将会触发释放 - - - - - 执行服务修饰器 - - 服务实例 - 服务实例 - - - - 执行服务修饰器之后的回调 - - 服务实例 - 服务实例 - - - - 执行服务释放处理器 - - 服务实例 - 服务实例 - - - - 增加一个事件 - - 闭包 - 事件列表 - - - - 依赖注入容器 - - - - - 服务所绑定的相关数据,记录了服务的关系 - - - - - 如果所属服务是静态的那么构建后将会储存在这里 - - - - - 单例化对象的反查表 - - - - - 服务的别名(key: 别名 , value: 映射的服务名) - - - - - 可以通过服务的真实名字来查找别名 - - - - - 服务标记,一个标记允许标记多个服务 - - - - - 服务构建时的修饰器 - - - - - 在服务构建修饰器之后的修饰器 - - - - - 静态服务释放时的修饰器 - - - - - 全局服务扩展方法 - - - - - 类型查询回调 - 当类型无法被解决时会尝试去开发者提供的查询器中查询类型 - - - - - 类型查询回调缓存 - - - - - 已经被解决过的服务名 - - - - - 单例服务构建时序 - - - - - 重定义事件 - - - - - 方法容器 - - - - - 同步锁 - - - - - 注入目标 - - - - - 编译堆栈 - - - - - 用户参数堆栈 - - - - - 是否在清空过程中 - - - - - 单例化Id - - - - - 服务禁用字符 - - - - - 构造一个容器 - - 初始预计服务数量 - - - - 为一个及以上的服务定义一个标记 - 如果标记已经存在那么服务会被追加进列表 - - 标记名 - 服务名或者别名 - null或者中的元素为null或者空字符串 - - - - 根据标记名生成标记所对应的所有服务实例 - - 标记名 - 将会返回标记所对应的所有服务实例 - 不存在 - null或者空字符串 - - - - 获取服务的绑定数据,如果绑定不存在则返回null(只有进行过bind才视作绑定) - - 服务名或别名 - 服务绑定数据或者null - null或者空字符串 - - - - 是否已经绑定了服务 - - 服务名或别名 - 服务是否被绑定 - - - - 是否已经实例静态化 - - 服务名或别名 - 是否已经静态化 - - - - 服务是否已经被解决过 - - 服务名或别名 - 是否已经被解决过 - - - - 是否可以生成服务 - - 服务名或者别名 - 是否可以生成服务 - - - - 服务是否是静态化的,如果服务不存在也将返回false - - 服务名或者别名 - 是否是静态化的 - - - - 是否是别名 - - 名字 - 是否是别名 - - - - 以全局的方式为服务设定一个别名 - - 别名 - 映射到的服务名 - 当前容器对象 - 别名冲突或者的绑定与实例都不存在 - ,null或者空字符串 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 服务绑定数据 - - - - 绑定一个服务 - - 服务名 - 服务实现 - 服务是否静态化 - 服务绑定数据 - null或者空字符串 - - - - 绑定一个服务 - - 服务名 - 服务实现 - 服务是否静态化 - 服务绑定数据 - 绑定冲突 - null - - - - 绑定一个方法到容器 - - 方法名 - 调用目标 - 调用方法 - 方法绑定数据 - - - - 解除绑定的方法 - - - 解除目标 - 如果为字符串则作为调用方法名 - 如果为IMethodBind则作为指定方法 - 如果为其他对象则作为调用目标做全体解除 - - - - - 调用一个已经被绑定的方法 - - 方法名 - 用户提供的参数 - 调用结果 - - - - 以依赖注入形式调用一个方法 - - 方法对象 - 方法信息 - 用户传入的参数 - 方法返回值 - ,null - - - - 构造服务 - - 服务名或别名 - 用户传入的构造参数 - null或者空字符串 - 出现循环依赖 - 服务实例,如果构造失败那么返回null - - - - 构造服务 - - 服务名或者别名 - 服务实例,如果构造失败那么返回null - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务名或别名,如果为null则意味着全局有效 - 闭包 - - - - 移除指定服务的全部扩展 - - 服务名或别名 - - - - 静态化一个服务,实例值会经过解决修饰器 - - 服务名或别名 - 服务实例,null也是合法的实例值 - null或者空字符串 - 的服务在绑定设置中不是静态的 - 被修饰器处理后的新的实例 - - - - 释放静态化实例 - - 服务名或别名或单例化的对象 - 是否完成了释放 - - - - 当查找类型无法找到时会尝试去调用开发者提供的查找类型函数 - - 查找类型的回调 - 查询优先级(值越小越优先) - 当前容器实例 - - - - 当静态服务被释放时 - - 处理释放时的回调 - 当前容器实例 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - - 回调函数 - 当前容器对象 - - - - 解决服务时事件之后的回调 - - 解决事件 - 服务绑定数据 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - 服务的新建(第一次解决服务)操作并不会触发重定义 - - 服务名 - 回调 - 服务容器 - - - - 解除绑定服务 - - 服务名或者别名 - - - - 清空容器的所有实例,绑定,别名,标签,解决器,方法容器, 扩展 - - - - - 将类型转为服务名 - - 类型 - 服务名 - - - - 解除绑定服务 - - 绑定关系 - - - - 在回调区间内暂时性的静态化服务实例 - - 回调区间 - 服务映射 - - - - 是否是依赖注入容器默认的基础类型 - - 基础类型 - 是否是基础类型 - - - - 是否是无法被构建的类型 - - 类型 - 是否可以被构建 - - - - 包装一个类型,可以被用来生成服务 - - 服务名 - 类型 - 根据类型生成的服务 - - - - 从用户传入的参数中获取依赖 - - 基础参数 - 用户传入参数 - 合适的注入参数 - - - - 转换参数类型 - - 需要转换的参数 - 转换到的类型 - 是否转换成功 - - - - 获取字段需求服务 - - 字段 - 需求的服务名 - - - - 获取参数需求服务 - - 当前正在解决的变量 - 需求的服务名 - - - - 根据上下文获取相关的构建闭包 - - 请求注入操作的服务绑定数据 - 构建的服务名 - 目标参数的名字 - 构建闭包 - - - - 根据上下文获取相关的需求服务 - - 请求注入操作的服务绑定数据 - 构建的服务名 - 目标参数的名字 - 需求的服务名 - - - - 从上下文闭包中进行构建获得实例 - - 上下文闭包 - 参数需求的类型 - 构建的实例 - 是否成功构建 - - - - 从上下文关系的服务名获取服务实现 - - 上下文关系的服务名 - 参数需求类型 - 构建的实例 - 是否成功构建 - - - - 根据上下文来解决指定需求的服务 - - 请求注入操作的服务绑定数据 - 构建的服务名字 - 目标参数的名字 - 目标参数的类型 - 构建的实例 - 是否成功通过上下文解决 - - - - 解决基本类型 - - 请求注入操作的服务绑定数据 - 希望解决的服务名或者别名 - 当前正在解决的变量 - 解决结果 - - - - 解决类类型 - - 请求注入操作的服务绑定数据 - 希望解决的服务名或者别名 - 当前正在解决的变量 - 解决结果 - - - - 解决基本类型 - - 请求注入操作的服务绑定数据 - 希望解决的服务名或者别名 - 当前正在解决的变量 - 解决结果 - - - - 解决类类型 - - 请求注入操作的服务绑定数据 - 希望解决的服务名或者别名 - 当前正在解决的变量 - 解决结果 - - - - 获取变量标签 - - 变量标签 - - - - 获取编译堆栈调试消息 - - - - - - 生成一个编译失败异常 - - 构造的服务名字 - 构造的服务类型 - 内部异常 - 运行时异常 - - - - 获取内部异常提示消息 - - 内部异常 - 提示消息内容 - - - - 生成一个未能解决基本类型的异常 - - 变量名 - 变量所属类 - 运行时异常 - - - - 生成一个出现循环依赖的异常 - - 当前服务名 - 运行时异常 - - - - 格式化服务名 - - 服务名 - 格式化后的服务名 - - - - 检查实例是否实现自某种类型 - - 需要实现自的类型 - 生成的实例 - 是否符合类型 - - - - 保证用户传入参数必须小于指定值 - - 传入参数数量 - - - - 守卫解决实例状态 - - 服务实例 - 服务名 - - - - 根据服务名推测服务的类型 - - 服务名 - 服务类型 - - - - 属性注入 - - 服务绑定数据 - 服务实例 - 服务实例 - 属性是必须的或者注入类型和需求类型不一致 - - - - 检查是否可以紧缩注入用户传入的参数 - - 服务实例的参数信息 - 输入的构造参数列表 - 是否可以紧缩注入 - - - - 获取通过紧缩注入的参数 - - 服务实例的参数信息 - 输入的构造参数列表 - 紧缩注入的参数 - - - - 获取参数()匹配器 - 开发者重写后可以实现自己的匹配器 - 如果调用获取到的匹配器后返回结果为null则表示没有匹配到参数 - - 用户传入的参数 - 匹配器,如果返回null则表示没有匹配器 - - - - 获取依赖解决结果 - - 服务绑定数据 - 服务实例的参数信息 - 输入的构造参数列表 - 服务所需参数的解决结果 - 生成的实例类型和需求类型不一致 - - - - 获取构造函数参数 - - 服务绑定数据 - 服务类型 - 用户传入的构造参数 - 构造函数参数 - - - - 通过对象反向获取服务名 - - 对象 - 服务名 - - - - 验证构建状态 - - 函数名 - - - - 验证服务名有效性 - - 服务名 - - - - 验证函数名有效性 - - 函数名 - - - - 验证重置状态 - - - - - 获取别名最终对应的服务名 - - 服务名或别名 - 最终映射的服务名 - - - - 触发全局解决修饰器 - - 服务绑定数据 - 服务实例 - 被修饰器修饰后的服务实例 - - - - 触发全局解决修饰器之后的修饰器回调 - - 服务绑定数据 - 服务实例 - 被修饰器修饰后的服务实例 - - - - 触发全局释放修饰器 - - 服务绑定数据 - 服务实例 - 被修饰器修饰后的服务实例 - - - - 触发指定的事件列表 - - 服务绑定数据 - 服务实例 - 事件列表 - 服务实例 - - - - 触发服务重定义事件 - - 发生重定义的服务 - 服务实例(如果为空将会从容器请求) - - - - 释放实例 - - 实例 - - - - 类型配实例配偶 - - 类型 - 实例 - 键值对 - - - - 获取重定义的服务所对应的回调 - - 服务名 - 回调列表 - - - - 是否拥有重定义的服务所对应的回调 - - 服务名 - 是否存在回调 - - - - 制作一个空的绑定数据 - - 服务名 - 空绑定数据 - - - - 解决服务 - - 服务名或别名 - 用户传入的构造参数 - 服务实例,如果构造失败那么返回null - null或者空字符串 - 出现循环依赖 - 无法解决服务 - 服务实例 - - - - 为服务进行扩展 - - 服务名 - 服务实例 - 扩展后的服务 - - - - 为对象进行依赖注入 - - 绑定数据 - 对象实例 - 注入完成的对象 - - - - 编译服务 - - 服务绑定数据 - 用户传入的构造参数 - 服务实例 - - - - 构造服务实现(准备需要注入的参数) - - 服务绑定数据 - 服务类型 - 用户传入的构造参数 - 服务实例 - - - - 通过指定的类型构建服务实现 - - 指定的服务类型 - 用户自定义参数 - 构建的服务实现 - - - - 获取服务绑定数据,如果数据为null则填充数据 - - 服务名 - 服务绑定数据 - - - - 从中获取类型的变量 - - 用户传入参数 - 获取到的参数 - - - - 生成一个默认的参数匹配器 - - 参数表 - 匹配器 - - - - 增加一个闭包到指定的列表 - - 闭包 - 指定的列表 - - - - 容器拓展 - - - - - 获取服务的绑定数据,如果绑定不存在则返回null - - 服务名 - 服务容器 - 服务绑定数据或者null - - - - 是否已经绑定了服务 - - 服务名 - 服务容器 - 代表服务是否被绑定 - - - - 是否已经实例静态化 - - 服务名 - 服务容器 - 是否已经静态化 - - - - 服务是否已经被解决过 - - 服务名 - 服务容器 - 是否已经被解决过 - - - - 是否可以生成服务 - - 服务名 - 服务容器 - 服务是否可以被构建 - - - - 服务是否是静态化的,如果服务不存在也将返回false - - 服务名 - 服务容器 - 服务是否是静态化的 - - - - 是否是别名 - - 服务名 - 服务容器 - 是否是别名 - - - - 为服务设定一个别名 - - 别名 - 服务名 - - - - 常规绑定一个服务 - - 服务名,同时也是服务实现 - 服务容器 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务实现 - 服务容器 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 常规绑定一个服务 - - 服务容器 - 服务名 - 服务实现 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务容器 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名,同时也是服务实现 - 服务容器 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务容器 - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 以单例的形式绑定一个服务 - - 服务容器 - 服务名 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务实现 - 服务容器 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名,同时也是服务实现 - 服务容器 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 以单例的形式绑定一个服务 - - 服务名 - 服务容器 - 服务实现 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务容器 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名,同时也是服务实现 - 服务容器 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务容器 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务容器 - 服务名 - 服务实现 - 如果绑定失败则返回历史绑定对象 - 是否完成绑定 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用目标 - 调用方法 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用方法 - - - - 绑定一个方法到容器 - - 服务容器 - 方法名 - 调用方法 - - - - 解除服务绑定 - - 解除绑定的服务 - 服务容器 - - - - 为一个服务定义一个标记 - - 服务 - 服务容器 - 标记名 - - - - 静态化一个服务,实例值会经过解决修饰器 - - 服务名 - 服务容器 - 实例值 - - - - 释放服务 - - 服务名 - 服务容器 - - - - 根据实例对象释放静态化实例 - - 服务容器 - 需要释放静态化实例对象 - 以相反的顺序开始释放 - 只要有一个没有释放成功那么返回false, 为没有释放掉的实例 - - - - 以依赖注入的形式调用一个方法 - - 服务容器 - 方法 - 用户参数 - - - - 以依赖注入的形式调用一个方法 - - 服务容器 - 方法 - 用户参数 - - - - 以依赖注入的形式调用一个方法 - - 服务容器 - 方法 - 用户参数 - - - - 以依赖注入的形式调用一个方法 - - 服务容器 - 方法 - 用户参数 - - - - 以依赖注入形式调用一个方法 - - 服务容器 - 方法对象 - 方法名 - 用户传入的参数 - 方法返回值 - ,null或者空字符串 - - - - 包装一个依赖注入形式调用的一个方法 - - 服务容器 - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 服务容器 - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 服务容器 - 方法 - 用户传入的参数 - 包装方法 - - - - 包装一个依赖注入形式调用的一个方法 - - 服务容器 - 方法 - 用户传入的参数 - 包装方法 - - - - 构造一个服务 - - 服务名 - 服务容器 - 用户提供的参数 - 服务实例 - - - - 构造一个服务 - - 服务容器 - 服务类型 - 用户提供的参数 - 服务实例 - - - - 获取一个回调,当执行回调可以生成指定的服务 - - 服务名 - 服务容器 - 用户传入的参数 - 回调方案 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务容器 - 服务名 - 闭包 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务容器 - 闭包 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务容器 - 闭包 - - - - 扩展容器中的服务 - 如果构建的实例符合指定的类型或者接口,那么触发扩展闭包 - - 实现的类型或接口 - 服务容器 - 闭包 - - - - 扩展容器中的服务 - 如果构建的实例符合指定的类型或者接口,那么触发扩展闭包 - - 实现的类型或接口 - 服务容器 - 闭包 - - - - 当静态服务被释放时 - - 服务容器 - 处理释放时的回调 - 当前容器实例 - - - - 当静态服务被释放时 - - 服务容器 - 处理释放时的回调 - 当前容器实例 - - - - 当静态服务被释放时 - - 服务容器 - 处理释放时的回调 - 当前容器实例 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - - 服务容器 - 回调函数 - 当前容器对象 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - 只有类型和给定的类型相匹配才会被回调 - - 指定的类型 - 服务容器 - 闭包 - 当前容器对象 - - - - 当服务被解决时,生成的服务会经过注册的回调函数 - 只有类型和给定的类型相匹配才会被回调 - - 指定的类型 - 服务容器 - 闭包 - 当前容器对象 - - - - 当服务被解决事件之后的回调 - - 服务容器 - 回调函数 - 当前容器对象 - - - - 当服务被解决事件之后的回调 - 只有类型和给定的类型相匹配才会被回调 - - 指定的类型 - 服务容器 - 闭包 - 当前容器对象 - - - - 当服务被解决事件之后的回调 - 只有类型和给定的类型相匹配才会被回调 - - 指定的类型 - 服务容器 - 闭包 - 当前容器对象 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - - 服务名 - 服务容器 - 回调 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - - 服务名 - 服务容器 - 回调 - - - - 在回调区间内暂时性的静态化服务实例 - - 服务容器 - 回调区间 - 服务名 - 实例名 - - - - 类型转为服务名 - - 服务类型 - 服务容器 - 服务名 - - - - 获取一个回调,当执行回调可以生成指定的服务 - - 服务容器 - 服务名或别名 - 用户传入的参数 - 回调方案 - - - - 绑定关系临时数据,用于支持链式调用 - - - - - 绑定数据 - - - - - 父级容器 - - - - - 需求什么服务 - - - - - 绑定关系临时数据 - - 依赖注入容器 - 可绑定数据 - - - - 需求什么服务 - - 需求什么服务 - 绑定关系实例 - - - - 给与什么服务 - - 给与的服务名或别名 - 服务绑定数据 - - - - 给与什么服务 - - 给与的服务名或别名 - 服务绑定数据 - - - - 给与什么服务 - - 给与的服务生成闭包 - 服务绑定数据 - - - - 依赖注入容器 - - - - - 获取服务的绑定数据,如果绑定不存在则返回null - - 服务名或者别名 - 服务绑定数据或者null - - - - 是否已经绑定了服务 - - 服务名或者别名 - 返回一个bool值代表服务是否被绑定 - - - - 是否已经实例静态化 - - 服务名或别名 - 是否已经静态化 - - - - 服务是否已经被解决过 - - 服务名或别名 - 是否已经被解决过 - - - - 是否可以生成服务 - - 服务名或者别名 - 是否可以生成服务 - - - - 服务是否是静态化的,如果服务不存在也将返回false - - 服务名或者别名 - 是否是静态化的 - - - - 是否是别名 - - 名字 - 是否是别名 - - - - 绑定一个服务 - - 服务名 - 服务实现 - 服务是否静态化 - 服务绑定数据 - - - - 绑定一个服务 - - 服务名 - 服务实体 - 服务是否静态化 - 服务绑定数据 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 是否成功绑定 - - - - 如果服务不存在那么则绑定服务 - - 服务名 - 服务实现 - 服务是否是静态的 - 如果绑定失败则返回历史绑定对象 - 是否成功绑定 - - - - 绑定一个方法到容器 - - 方法名 - 调用目标 - 调用方法 - 方法绑定数据 - - - - 解除绑定的方法 - - - 解除目标 - 如果为字符串则作为调用方法名 - 如果为IMethodBind则作为指定方法 - 如果为其他对象则作为调用目标做全体解除 - - - - - 解除绑定服务 - - 服务名或者别名 - - - - 为一个及以上的服务定义一个标记 - - 标记名 - 服务名 - - - - 根据标记名生成标记所对应的所有服务实例 - - 标记名 - 将会返回标记所对应的所有服务实例 - - - - 静态化一个服务 - - 服务名或者别名 - 服务实例 - 被修饰器处理后的新的实例 - - - - 释放某个单例化的对象 - - 服务名或别名或单例对象 - - - - 清空容器的所有实例,绑定,别名,标签,解决器,方法容器, 扩展 - - - - - 调用一个已经被绑定的方法 - - 方法名 - 用户提供的参数 - 调用结果 - - - - 以依赖注入形式调用一个方法 - - 方法对象 - 方法信息 - 用户传入的参数 - 方法返回值 - - - - 构造服务 - - 服务名或别名 - 用户传入的参数 - 服务实例,如果构造失败那么返回null - - - - 构造服务 - - 服务名或者别名 - 服务实例,如果构造失败那么返回null - - - - 为服务设定一个别名 - - 别名 - 映射到的服务名 - 当前容器对象 - - - - 扩展容器中的服务 - 允许在服务构建的过程中配置或者替换服务 - 如果服务已经被构建,拓展会立即生效。 - - 服务名或别名,如果为null则意味着全局有效 - 闭包 - - - - 当服务被解决时触发的事件 - - 回调函数 - 当前容器实例 - - - - 解决服务时事件之后的回调 - - 解决事件 - 服务绑定数据 - - - - 当静态服务被释放时 - - 处理释放时的回调 - - - - 当查找类型无法找到时会尝试去调用开发者提供的查找类型函数 - - 查找类型的回调 - 查询优先级(值越小越优先) - 当前容器实例 - - - - 关注指定的服务,当服务触发重定义时调用指定对象的指定方法 - 调用是以依赖注入的形式进行的 - 服务的新建(第一次解决服务)操作并不会触发重定义 - - 服务名 - 回调 - 服务容器 - - - - 在回调区间内暂时性的静态化服务实例 - - 回调区间 - 服务映射 - - - - 类型转为服务名 - - 类型 - 转换后的服务名 - - - - 注入标记 - - - - - 服务绑定数据 - - - - - 服务实现 - - - - - 是否是静态服务 - - - - - 为服务设定一个别名 - - 别名 - 服务绑定数据 - - - - 为服务打上一个标签 - - 标签名 - 服务绑定数据 - - - - 解决服务时触发的回调 - - 解决事件 - 服务绑定数据 - - - - 解决服务时事件之后的回调 - - 解决事件 - 服务绑定数据 - - - - 当服务被释放时 - - 处理事件 - 服务绑定数据 - - - - 绑定关系临时数据,用于支持链式调用 - - 返回类型 - - - - 给与什么服务 - - 给与的服务名或别名 - 服务绑定数据 - - - - 给与什么服务 - - 给与的服务名或别名 - 服务绑定数据 - - - - 给与什么服务 - - 给定的服务 - 服务绑定数据 - - - - 事件调度器 - - - - - 分组映射 - - - - - 普通事件列表 - - - - - 通配符事件列表 - - - - - 同步锁 - - - - - 跳出标记 - - - - - 构建一个事件调度器 - - - - - 判断给定事件是否存在事件监听器 - - 事件名 - - 严格模式 - 启用严格模式则不使用正则来进行匹配事件监听器 - - 是否存在事件监听器 - - - - 触发一个事件,并获取事件监听器的返回结果 - - 事件名称 - 载荷 - 事件结果 - - - - 触发一个事件,并获取事件监听器的返回结果 - - 事件名称 - 载荷 - 事件结果 - - - - 注册一个事件监听器 - - 事件名称 - 执行方法 - 事件分组,如果为Null则不进行分组 - 事件对象 - - - - 解除注册的事件监听器 - - - 事件解除目标 - 如果传入的是字符串(string)将会解除对应事件名的所有事件 - 如果传入的是事件对象(IEvent)那么解除对应事件 - 如果传入的是分组(object)会解除该分组下的所有事件 - - - - - 生成事件 - - 事件名 - 事件执行方法 - 事件分组 - 是否是通配符事件 - - - - 创建事件监听器 - - 事件执行器 - 是否是通配符方法 - 事件监听器 - - - - 格式化事件名 - - 事件名 - 格式化后的事件名 - - - - 是否是通配符事件 - - 事件名 - 是否是通配符事件 - - - - 调度事件 - - 遇到第一个事件存在处理结果后终止 - 事件名 - 载荷 - 处理结果 - - - - 获取指定事件的事件列表 - - 事件名 - 事件列表 - - - - 根据普通事件解除相关事件 - - 事件名 - - - - 根据通配符事件解除相关事件 - - 事件名 - - - - 根据Object解除事件 - - 事件解除目标 - - - - 从事件调度器中移除指定的事件监听器 - - 事件监听器 - - - - 销毁普通事件 - - 事件对象 - - - - 销毁通配符事件 - - 事件对象 - - - - 设定普通事件 - - 事件名 - 事件调用方法 - 事件分组 - 监听事件 - - - - 设定通配符事件 - - 事件名 - 事件调用方法 - 事件分组 - 监听事件 - - - - 事件对象 - - - - - 原始事件名 - - - - - 事件根源对象 - - - - - 依赖解决器 - - - - - 创建一个事件对象 - - 事件名 - 事件分组 - 事件执行器 - - - - 调用事件处理函数 - - 调用事件的完整名字 - 事件载荷 - 事件处理结果 - - - - 断言异常 - - - - - 断言异常 - - - - - 断言异常 - - 异常消息 - - - - 断言异常 - - 异常消息 - 内部异常 - - - - 代码规范异常,引发本异常一般由于不正确的使用框架 - - - - - 代码规范异常 - - - - - 代码规范异常 - - 异常消息 - - - - 代码规范异常 - - 异常消息 - 内部异常 - - - - 代码逻辑异常 - - - - - 代码逻辑异常 - - - - - 代码逻辑异常 - - 异常消息 - - - - 代码逻辑异常 - - 异常消息 - 内部异常 - - - - 运行时异常 - - - - - 运行时异常 - - - - - 运行时异常 - - 异常消息 - - - - 运行时异常 - - 异常消息 - 内部异常 - - - - 过滤器链 - - 输入参数 - - - - 过滤器链 - - - - - 过滤器列表 - - - - - 堆栈 用于解决内部递归调用过滤器链所出现的问题 - - - - - 构建一个过滤器链 - - - - - 增加一个过滤器 - - 过滤器 - 优先级(值越小越优先) - 过滤器链 - - - - 执行过滤器链 - - 输入数据 - 当过滤器执行完成后执行的操作 - - - - 下一层过滤器链 - - 当过滤器执行完成后执行的操作 - 执行过滤器 - - - - 过滤器链 - - 输入参数 - 输出参数 - - - - 过滤器链 - - - - - 过滤器列表 - - - - - 堆栈 用于解决内部递归调用过滤器链所出现的问题 - - - - - 构建一个过滤器链 - - - - - 增加一个过滤器 - - 过滤器 - 优先级 - 过滤器链 - - - - 执行过滤器链 - - 输入参数 - 输出参数 - 当过滤器执行完成后执行的操作 - - - - 下一层过滤器链 - - 当过滤器执行完成后执行的操作 - 执行过滤器 - - - - 过滤器链 - - 输入参数 - 输出参数 - 输入异常 - - - - 过滤器链 - - - - - 过滤器列表 - - - - - 堆栈 用于解决内部递归调用过滤器链所出现的问题 - - - - - 构建一个过滤器链 - - - - - 增加一个过滤器 - - 过滤器 - 优先级 - 过滤器链 - - - - 执行过滤器链 - - 输入参数 - 输出参数 - 输入异常 - 当过滤器执行完成后执行的操作 - - - - 下一层过滤器链 - - 当过滤器执行完成后执行的操作 - 执行过滤器 - - - - 过滤器链 - - 输入参数 - - - - 过滤器列表 - - - - - 增加过滤器 - - 过滤器 - 优先级(值越小越优先) - 过滤器链 - - - - 执行过滤器链 - - 输入数据 - 当过滤器执行完成后执行的操作 - - - - 过滤器链 - - 输入参数 - 输出参数 - - - - 过滤器列表 - - - - - 增加一个过滤器 - - 过滤器 - 优先级(值越小越优先) - 过滤器链 - - - - 执行过滤器链 - - 输入参数 - 输出参数 - 当过滤器执行完成后执行的操作 - - - - 过滤器链 - - 输入参数 - 输出参数 - 输入异常 - - - - 过滤器列表 - - - - - 增加一个过滤器 - - 过滤器 - 优先级(值越小越优先) - 过滤器链 - - - - 执行过滤器链 - - 输入参数 - 输出参数 - 输入异常 - 当过滤器执行完成后执行的操作 - - - - 守卫 - - - - - 验证一个条件,并在该协定的条件失败时引发异常。 - - 异常 - 条件 - - - - 不为空或者null - - 参数值 - 参数名 - - - - 长度大于0 - - 类型 - 参数值 - 参数名 - - - - 元素部位空或者null - - 参数值 - 参数名 - - - - 内容不为空 - - 参数值 - 参数名 - - - - 内部列表 - - - - - 列表元素 - - - - - 实际元素个数 - - - - - 是否被删除 - - - - - 新建一个内部列表 - - 容量 - - - - 获取或者设定一个元素 - - 偏移量 - 元素 - - - - 在指定位置插入元素 - - 元素 - 偏移量 - - - - 移除元素 - - 偏移量 - - - - 移除范围内的元素 - - 起始范围(包含) - 结束范围(包含) - - - - 替换指定位置的元素 - - 元素 - 偏移量 - - - - 合入元素 - - 元素 - - - - 合并内部列表 - - 需要被合并进来的内部列表 - 是否在当前列表元素的尾部合入 - - - - 拆分列表 - - 偏移量 - 是否是后拆 - - - - 在尾部推入元素 - - 元素 - - - - 弹出尾部数据 - - - - - - 在列表头部加入元素 - - - - - - 推出列表头部的元素 - - 元素 - - - - 快速列表 - - - - - 列表元素基数 - - - - - 快速列表中的结点数量 - - - - - 将元素插入到列表尾部 - - 元素 - - - - 将元素插入到列表尾部 - - 元素 - - - - 将元素插入到列表头部 - - 元素 - - - - 移除并返回列表的尾部元素 - - 元素 - - - - 移除并返回列表头部的元素 - - 元素 - - - - 对列表进行修剪,只保留下标范围内的元素 - - 起始下标 - 结束下标 - 移除的元素数量 - - - - 根据参数 的值,移除列表中与参数 相等的元素。 - count > 0 : 从表头开始向表尾搜索,移除与 相等的元素,数量为 - count < 0 : 从表尾开始向表头搜索,移除与 相等的元素,数量为绝对值 - count = 0 : 移除表中所有与 相等的元素。 - - 要被移除的元素 - 移除的元素数量,使用正负来决定扫描起始位置,如果为0则全部匹配的元素,反之移除指定数量。 - 被移除元素的数量 - - - - 获取区间内的所有元素,1个元素占1个位置,范围不允许使用负数表示 - - 起始位置(包含) - 结束位置(包含) - 区间内的元素列表 - - - - 通过下标访问元素,如果传入的是一个负数下标那么从末尾开始查找 - - 下标,允许为负数 - 元素 - - - - 在指定元素之后插入 - - 查找的元素 - 要插入的元素 - - - - 在指定元素之前插入 - - 查找的元素 - 要插入的元素 - - - - 反转遍历顺序(并不是反转整个列表) - - - - - 清空快速列表 - - - - - 获取第一个元素 - - 第一个元素 - - - - 获取最后一个元素 - - 最后一个元素 - - - - 快速列表 - - 元素 - - - - 合并系数 - - - - - 快速列表结点 - - - - - 后置结点 - - - - - 前置结点 - - - - - 列表 - - - - - 快速列表迭代器 - - - - - 快速列表 - - - - - 是否是向前遍历 - - - - - 版本 - - - - - 当前元素 - - - - - 当前节点 - - - - - 访问下标 - - - - - 构造一个迭代器 - - - - - - - 移动到下一个节点 - - 下一个节点是否存在 - - - - 获取当前元素 - - - - - 获取当前元素 - - - - - 重置迭代器 - - - - - 释放时 - - - - - 每个快速列表结点最多的元素数量 - - - - - 列表头 - - - - - 列表尾 - - - - - 是否是向前的迭代方向 - - - - - 版本号 - - - - - 同步锁 - - - - - 列表元素基数 - - - - - 快速列表中的结点数量 - - - - - 快速列表 - - 每个结点中元素的最大数量 - - - - 清空 - - - - - 获取第一个元素 - - 第一个元素 - - - - 获取最后一个元素 - - 最后一个元素 - - - - 将元素插入到列表尾部 - - 元素 - - - - 将元素插入到列表尾部 - - 元素 - - - - 将元素插入到列表头部 - - 元素 - - - - 移除并返回列表的尾部元素 - - 元素 - - - - 移除并返回列表头部的元素 - - 元素 - - - - 对列表进行修剪,只保留下标范围内的元素 - - 起始下标(包含) - 结束下标(包含) - 移除的元素数量 - 大于或者小于0时引发 - - - - 根据参数 的值,移除列表中与参数 相等的元素。 - count > 0 : 从表头开始向表尾搜索,移除与 相等的元素,数量为 - count < 0 : 从表尾开始向表头搜索,移除与 相等的元素,数量为绝对值 - count = 0 : 移除表中所有与 相等的元素。 - - 要被移除的元素 - 移除的元素数量,使用正负来决定扫描起始位置,如果为0则全部匹配的元素,反之移除指定数量。 - 被移除元素的数量 - - - - 获取区间内的所有元素,1个元素占1个位置 - - 起始位置(包含) - 结束位置(包含) - 区间内的元素列表 - 大于时引发 - - - - 通过下标访问元素,如果传入的是一个负数下标那么从末尾开始查找 - - 下标,允许为负数 - 元素 - 下标越界时会引发 - - - - 在指定元素之后插入 - - 查找的元素 - 要插入的元素 - - - - 在指定元素之前插入 - - 查找的元素 - 要插入的元素 - - - - 反转遍历顺序(并不是反转整个列表) - - - - - 迭代器 - - 迭代器 - - - - 迭代器 - - 迭代器 - - - - 迭代器 - - 迭代器 - - - - 根据下标查找元素,如果传入的是一个负数下标那么从末尾开始查找 - - 下标 - 偏移量 - 元素 - - - - 插入元素 - - 被插入的元素 - 是否在被查找的元素之后插入 - 需要插入的结点 - 结点相对偏移量 - - - - 尝试合并结点 - - 发起合并的结点 - - - - 将从结点合并进主节点 - - 主结点 - 从结点 - 从结点将怎么合并 - - - - 是否允许进行合并 - - 结点 - 结点 - 是否可以合并 - - - - 拆分结点 - - 要被拆分的结点 - 拆分偏移量 - 前拆将会将offset之前的元素作为返回结点,后拆分则会将offset之后的元素作为返回结点 - 拆分出的结点 - - - - 查找元素所在结点 - - 元素 - 偏移量 - 所在结点,如果找不到结点则返回null - - - - 列表弹出数据 - - 结点 - 是否是头部 - - - - 删除结点 - - 结点 - - - - 插入结点 - - 旧的结点 - 新的结点 - 在旧的结点之前还是之后 - - - - 创建结点 - - - - - - 快速列表结点是否允许插入 - - 结点 - 是否可以插入 - - - - 环型缓冲区 - - - - - 缓冲区容量 - - - - - 同步锁 - - - - - 可写容量 - - - - - 可读容量 - - - - - 是否可以进行读取 - - 指定的长度 - - - - 是否可以进行写入 - - 指定的长度 - - - - 获取环型缓冲区的原始数组 - - 原始数组 - - - - 将可以读取的数据全部返回 - - 可以读取的数据 - - - - 将数据读取到中 - - 输出的数据 - 实际输出的长度 - - - - 将数据读取到中 - - 输出的数据 - 输出数组偏移多少作为起始 - 实际输出的长度 - - - - 将数据读取到中 - - 输出的数据 - 输出数组偏移多少作为起始 - 输出的长度 - 实际输出的长度 - - - - 将环型缓冲区的数据全部返回,但是不前移读取位置 - - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 输出数组偏移多少作为起始 - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 输出数组偏移多少作为起始 - 输出的长度 - 实际输出的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 实际被写入的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 偏移多少数据开始写入 - 实际被写入的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 偏移多少数据开始写入 - 写入的长度 - 实际被写入的长度 - - - - 清空缓冲区中的所有数据 - - - - - 环型缓冲区 - - - - - 容量 - - - - - 缓冲区容量 - - - - - 缓冲区大小 - - - - - 原始数组是否可以返回给开发者 - - - - - 写入的游标 - - - - - 读取的游标 - - - - - 遮罩层 - 为了快速计算出,环回中的写入点 - - - - - 同步锁 - - - - - 同步锁 - - - - - 可写容量 - - - - - 可读容量 - - - - - 构建一个新的环型缓冲区实例 - - 容量,将为临近2的次方(向上取) - 是否可以访问内部数组 - - - - 是否可以进行读取 - - 指定的长度 - - - - 是否可以进行写入 - - 指定的长度 - - - - 获取环型缓冲区的原始数组 - - 原始数组 - - - - 将可以读取的数据全部返回 - - 可以读取的数据 - - - - 将数据读取到中 - - 输出的数据 - 实际输出的长度 - - - - 将数据读取到中 - - 输出的数据 - 输出数组偏移多少作为起始 - 实际输出的长度 - - - - 将数据读取到中 - - 输出的数据 - 输出数组偏移多少作为起始 - 输出的长度 - 实际输出的长度 - - - - 将环型缓冲区的数据全部返回,但是不前移读取位置 - - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 输出数组偏移多少作为起始 - 实际输出的长度 - - - - 将环型缓冲区的数据读取到中,但是不前移读取位置 - - 输出的数据 - 输出数组偏移多少作为起始 - 输出的长度 - 实际输出的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 实际被写入的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 偏移多少数据开始写入 - 实际被写入的长度 - - - - 将数据写入到环型缓冲区 - - 写入的数据 - 偏移多少数据开始写入 - 写入的长度 - 实际被写入的长度 - - - - 清空缓冲区中的所有数据 - - - - - 释放 - - - - - 获取可以被读取的字节流大小 - - - - - - 得到可以被写入的字节流大小 - - - - - 获取当前可读的buffer - - 可以被读取的buffer - - - - 基础存储 - - - - - 存储数据的长度 - - - - - 读写锁 - - - - - 是否应被释放 - - - - - 将指定缓冲区的数据写入到内存存储 - - 指定缓冲区 - 缓冲区的起始位置 - 缓冲区的长度 - 存储的起始位置 - - - - 将指定缓冲区的数据追加到内存存储 - - 指定缓冲区 - 缓冲区的起始位置 - 写入的长度 - - - - 读取数据到指定缓冲区 - - 指定缓冲区 - 缓冲区的起始位置 - 读取的长度 - 存储的起始位置 - 实际读取的长度 - - - - 组合流,允许将多个不同的流组合成一个流 - - - - - 全局游标位置 - - - - - 当前所处的流 - - - - - 组合流 - - - - - 组合流的长度 - - - - - 组合流的长度 - - - - - 是否能够偏移 - - - - - 获取当前偏移量 - - - - - 是否是可读的 - - - - - 是否是可写的 - - - - - 组合流关闭时是否自动关闭流 - - - - - 构建一个组合流实例,允许将两个不同的流组合成一个流 - - 流 - 流 - 当组合流释放时是否自动关闭其中的流 - - - - 构建一个组合流实例,允许将多个流组合成一个流 - - 流 - 当组合流释放时是否自动关闭其中的流 - - - - 设定位置偏移 - - 偏移量 - 偏移方向 - 当前偏移量 - - - - 计算偏移下标 - - 全局位置 - 本地偏移量 - - - - 读取组合流的数据到缓冲区 - - 缓冲区 - 缓冲区偏移量 - 希望读取的长度 - 实际读取的长度 - - - - 写入数据到组合流 - - 缓冲区 - 偏移量 - - - - - 设定流的长度 - - 长度 - - - - Flush Stream - - - - - 当组合流释放时 - - - - - - 管道通讯流 - 一读一写线程安全 - - - - - 可以被读取的长度 - - - - - 容量 - - - - - 休眠时间 - - - - - 环形缓冲区 - - - - - 当完成读取后触发 - - - - - 是否已经被释放了 - - - - - 是否已经关闭流了 - - - - - 是否可以被读取 - - - - - 是否可以被写入 - - - - - 当前流的位置 - - - - - 流位置 - - - - - 流的长度 - - - - - 流的长度 - - - - - 是否能够设定偏移量 - - - - - 是否已经关闭了流 - - - - - 管道通讯流 - - 缓冲区容量 - 线程休眠时间 - - - - GC回收时 - - - - - 设定流位置(不支持) - - 偏移量 - 偏移方向 - - - - - 设定流的长度 - - 长度 - - - - 刷新缓冲区 - - - - - 将流中的数据读取到指定缓冲区 - - 指定缓冲区 - 缓冲区起始偏移量 - 读取的长度 - 实际读取的长度 - - - - 将指定缓冲区数据写入流中 - - 指定缓冲区 - 缓冲区起始偏移量 - 写入的长度 - - - - 关闭流 - - - - - 断言关闭 - - - - - 断言释放 - - - - - 释放资源 - - 是否进行释放 - - - - 分片流可以用于包装指定分片的流。 - 使指定分片的流访问起来就像传统流那样从开头到结尾。 - - - - - 基础流的初始的位置 - - - - - 分片的大小 - - - - - 构造一个分片流 - - 基础流 - 分片大小 - - - - 剩余长度 - - - - - 流的长度 - - - - - 当前流的位置 - - - - - 设定流的位置 - - 偏移量 - 偏移方向 - 流的位置 - - - - 读取流的数据到指定缓冲区 - - 指定缓冲区 - 缓冲区偏移量 - 希望读取的长度 - 实际读取的长度 - - - - 设定流的长度 - - - - - - 将指定缓冲区的数据写入流中 - - 指定缓冲区 - 缓冲区偏移量 - 写入数据的长度 - - - - 存储数据流 - - - - - 当前游标所处的位置 - - - - - 是否已经被释放了 - - - - - 是否是可写的 - - - - - 存储数据 - - - - - 偏移量 - - - - - 数据的长度 - - - - - 是否是可以写入数据的 - - - - - 是否可以进行游标偏移 - - - - - 是否可以读取数据 - - - - - 是否已经被释放 - - - - - 存储数据流 - - 单个内存块的分块 - 是否是可写的 - 锁超时时间 - - - - GC回收时 - - - - - 偏移游标到指定位置 - - 偏移量 - 偏移方向 - 新的位置 - - - - 写入数据 - - 需要写入的字节流 - 字节流的起始位置 - 需要写入的长度 - - - - 读取数据到指定缓冲区 - - 指定缓冲区 - 缓冲区的起始位置 - 需要读取的长度 - 实际读取的长度 - - - - 设定长度 - - 新的长度值 - - - - 清除当前流的缓冲区 - - - - - 获取线程占用异常 - - 异常 - - - - 释放资源 - - 是否进行释放 - - - - 断言是否已经被释放 - - - - - 断言是否能够写入 - - - - - 内存存储 - - - - - 区块元数据 - - - - - 区块下标 - - - - - 起始偏移量 - - - - - 终止偏移量 - - - - - 存储数据 - - - - - 获取相对偏移量 - - 全局偏移量 - 相对偏移量 - - - - 获取当前区块剩余量 - - 全局偏移量 - 剩余量 - - - - 当前存储最大内存使用量 - - - - - 单个内存块的大小 - - - - - 数据长度 - - - - - 存储的数据 - - - - - 实际存储的长度 - - - - - 读写锁 - - - - - 读写锁 - - - - - 是否已经被释放的 - - - - - 构建一个新的内存存储 - - 块缓冲区大小 - 起始块数量 - - - - 构建一个新的内存存储 - - 最大内存使用量 - 块缓冲区大小 - 起始块数量 - - - - 将指定缓冲区的数据写入到内存存储 - - 指定缓冲区 - 缓冲区的起始位置 - 缓冲区的长度 - 内存存储的起始位置 - - - - 将指定缓冲区的数据追加到内存存储 - - 指定缓冲区 - 缓冲区的起始位置 - 缓冲区的长度 - - - - 读取数据到指定缓冲区 - - 指定缓冲区 - 缓冲区的起始位置 - 读取的长度 - 存储的起始位置 - 实际读取的长度 - - - - 获取指定位置的区块下标 - - 指定位置 - 是否允许为空 - 区块数据 - - - - 获取指定区块下标的区块数据 - - 区块下标 - 是否允许为空 - 区块数据 - - - - GC回收时 - - - - - 释放内存存储 - - - - - 创建缓冲区 - - 缓冲区 - - - - 创建缓冲区 - - 缓冲区 - - - - 释放缓冲区 - - 区块元数据 - - - - 释放缓冲区 - - 缓冲大小 - - - - 保障存储块满足存储条件 - - 总共需要占用的空间 - - - - 释放内存存储 - - - - - - 断言是否已经被释放 - - - - - 断言内存使用 - - 内存占用 - - - - 包装流 - - - - - 基础流 - - - - - 流是否可读 - - - - - 流是否可以偏移 - - - - - 流是否可写 - - - - - 流的偏移位置 - - - - - 流的长度 - - - - - 构建一个包装流 - - - - - 构建一个包装流 - - 基础流 - - - - 偏移流到指定位置 - - 指定位置 - 偏移方向 - 新的位置 - - - - 刷新流的缓冲区 - - - - - 在流中写入指定缓冲区的数据 - - 指定缓冲区 - 指定缓冲区偏移量 - 写入的长度 - - - - 设定流的长度 - - 长度 - - - - 读取流的数据到指定缓冲区 - - 指定缓冲区 - 指定缓冲区偏移量 - 读取的长度 - 实际读取的长度 - - - - 字典 - - - - - 将输入字典中的每个值传给回调函数,如果回调函数返回 true,则把输入字典中的当前键值对加入结果字典中 - - 字典键类型 - 字典值类型 - 规定字典 - 回调函数 - 需求字典 - - - - 将输入字典中的每个值传给回调函数,如果回调函数返回 true,则移除字典中对应的元素,并返回被移除的元素 - - 字典键类型 - 字典值类型 - 规定字典 - 回调函数 - 被移除的元素 - - - - 将输入字典中的每个值传给回调函数,回调函数的返回值用于修改元素的值 - - 字典键类型 - 字典值类型 - 规定字典 - 回调函数 - - - - 将元素批量添加到字典 - - 字典键 - 字典值 - 目标字典 - 增加的内容 - 遇到重复是否替换,如果不进行替换遇到重复将会抛出一个异常 - - - - 将字典值传入用户自定义函数,自定义函数返回的值作为新的字典值 - - 字典键类型 - 字典值类型 - 规定字典 - 自定义函数 - 处理后的字典 - - - - 获取字典的键数组 - - 字典键类型 - 字典值类型 - 规定字典 - 字典的键数组 - - - - 获取字典的值数组 - - 字典键类型 - 字典值类型 - 规定字典 - 字典的值数组 - - - - 使用点(.)来访问深度字典 - - 规定字典 - 键,支持使用点(.)来进行深度访问 - 默认值 - 字典值 - - - - 使用点(.)来访问深度字典,并为其指定位置设定一个值 - - 规定字典 - 键,支持使用点(.)来进行深度访问 - 设定的值 - - - - 使用点(.)来访问深度字典,并移除其中指定的值 - - 规定字典 - 键,支持使用点(.)来进行深度访问 - - - - 通过深度数组来访问字典 - - 规定字典 - 深度数组(深度数组以倒序传入) - 字典值 - - - - 通过深度数组来访问字典,并为其指定位置设定一个值 - - 规定字典 - 深度数组(深度数组以倒序传入) - 设定值 - - - - 通过深度数组来移除数组中的一个值 - - 规定字典 - 深度数组(深度数组以倒序传入) - - - - 有序集 - - 元素 - 分数 - - - - 有序集的基数 - - - - - 同步锁 - - - - - 清空SortSet - - - - - 插入记录 - - 元素 - 分数 - - - - 是否包含某个元素 - - 元素 - - - - 返回有序集的分数 - - 元素 - 分数,如果元素不存在则引发异常 - 不存在时引发 - null时引发 - - - - 获取分数范围内的元素个数 - - 起始值(包含) - 结束值(包含) - 分数值在(包含)和(包含)之间的元素数量 - - - - 从有序集中删除元素,如果元素不存在返回false - - 元素 - 是否成功 - - - - 根据排名区间移除区间内的元素 - - 开始的排名(包含),排名以0为底 - 结束的排名(包含),排名以0为底 - 被删除的元素个数 - - - - 根据分数区间移除区间内的元素 - - 开始的分数(包含) - 结束的分数(包含) - 被删除的元素个数 - - - - 获取排名 , 有序集成员按照Score从小到大排序 - - 元素 - 排名排名以0为底,为-1则表示没有找到元素 - - - - 获取排名,有序集成员按照Score从大到小排序 - - - 排名排名以0为底 , 为-1则表示没有找到元素 - - - - 根据排名区间获取区间内的所有元素 - - 开始的排名(包含),排名以0为底 - 结束的排名(包含),排名以0为底 - 元素列表 - - - - 根据分数区间获取区间内的所有元素 - - 开始的分数(包含) - 结束的分数(包含) - 元素列表 - - - - 根据排名获取元素 (有序集成员按照Score从小到大排序) - - 排名,排名以0为底 - 元素 - - - - 根据排名获取元素 (有序集成员按照Score从大到小排序) - - 排名,排名以0为底 - 元素 - - - - 反转遍历顺序(并不是反转整个有序集) - - - - - 反转遍历顺序(并不是反转整个有序集) - - 指定的反转顺序 - - - - 获取第一个元素 - - 第一个元素 - - - - 获取最后一个元素 - - 最后一个元素 - - - - 移除并返回有序集头部的元素 - - 元素 - - - - 移除并返回有序集尾部的元素 - - 元素 - - - - 获取指定排名的元素(有序集成员按照Score从小到大排序) - - 排名,排名以0为底 - 指定的元素 - - - - 转为数组 - - 元素数组 - - - - 有序集 - 有序集使用分数进行排序(以小到大) - - - - - 跳跃结点 - - - - - 下一个结点 - - - - - 层跨越的结点数量 - - - - - 元素 - - - - - 分数 - - - - - 是否被删除 - - - - - 向后的结点 - - - - - 层级 - - - - - 有序集迭代器 - - - - - 快速列表 - - - - - 是否是向前遍历 - - - - - 当前节点 - - - - - 构造一个迭代器 - - 有序集 - 是否向前遍历 - - - - 移动到下一个节点 - - 下一个节点是否存在 - - - - 获取当前元素 - - - - - 获取当前元素 - - - - - 重置迭代器 - - - - - 释放时 - - - - - 是否是向前的迭代方向 - - - - - 最大层数 - - - - - 字典 - - - - - 当前拥有的层 - - - - - 跳跃表头结点 - - - - - 尾部结点 - - - - - 可能出现层数的概率 - - - - - 随机数发生器 - - - - - 比较器 - - - - - 有序集的基数 - - - - - 同步锁 - - - - - 创建一个有序集 - - 可能出现层数的概率系数(0-1之间的数) - 最大层数 - 不是有效值时引发 - - - - 创建一个有序集 - - 比较器 - 可能出现层数的概率系数(0-1之间的数) - 最大层数 - - - - 清空SortSet - - - - - 反转遍历顺序(并不是反转整个有序集) - - - - - 反转遍历顺序(并不是反转整个有序集) - - 反转顺序 - - - - 迭代器 - - 迭代器 - - - - 迭代器 - - 迭代器 - - - - 迭代器 - - 迭代器 - - - - 转为数组 - - 数组 - - - - 获取第一个元素 - - 最后一个元素 - - - - 获取最后一个元素 - - 元素 - - - - 移除并返回有序集头部的元素 - - 元素 - - - - 移除并返回有序集尾部的元素 - - 元素 - - - - 获取指定排名的元素(有序集成员按照Score从小到大排序) - - 排名,排名以0为底 - 指定的元素 - - - - 插入记录 - - 元素 - 分数 - null时引发 - - - - 是否包含某个元素 - - 元素 - null时引发 - - - - 返回有序集的分数 - - 元素 - 分数,如果元素不存在则引发异常 - 不存在时引发 - null时引发 - - - - 获取分数范围内的元素个数 - - 起始值(包含) - 结束值(包含) - 分数值在(包含)和(包含)之间的元素数量 - 区间无效时引发 - - - - 从有序集中删除元素,如果元素不存在返回false - - 元素 - 是否成功 - null时引发 - - - - 根据排名区间移除区间内的元素 - - 开始的排名(包含),排名以0为底 - 结束的排名(包含),排名以0为底 - 被删除的元素个数 - 区间无效时引发 - - - - 根据分数区间移除区间内的元素 - - 开始的分数(包含) - 结束的分数(包含) - 被删除的元素个数 - 区间无效时引发 - - - - 获取排名 , 有序集成员按照Score从小到大排序 - - 元素 - 排名排名以0为底,为-1则表示没有找到元素 - null时引发 - - - - 获取排名,有序集成员按照Score从大到小排序 - - - 排名排名以0为底 , 为-1则表示没有找到元素 - null时引发 - - - - 根据排名区间获取区间内的所有元素 - - 开始的排名(包含),排名以0为底 - 结束的排名(包含),排名以0为底 - 元素列表 - 区间无效时引发 - - - - 根据分数区间获取区间内的所有元素 - - 开始的分数(包含) - 结束的分数(包含) - 元素列表 - 区间无效时引发 - - - - 根据排名获取元素 (有序集成员按照Score从小到大排序) - - 排名,排名以0为底 - 元素 - - - - 根据排名获取元素 (有序集成员按照Score从大到小排序) - - 排名,排名以0为底 - 元素 - - - - 插入记录 - - 元素 - 分数 - - - - 移除元素 - - 节点 - 元素 - 移除的元素 - - - - 如果元素存在那么从有序集中删除元素 - - 元素 - 分数 - 是否成功 - - - - 获取元素排名 - - 元素 - 分数 - 排名,排名以0为底 - - - - 是否查询下一个元素 - - 跳跃结点 - 元素 - 分数 - 层级 - 是否查找下一个 - - - - 删除结点关系 - - 结点 - 更新结点列表 - - - - 获取随机层 - - 随机的层数 - - - - 比较左值和右值 - 如果左值小于右值返回值需要小于0 - 如果左值等于右值返回值需要等于0 - 如果左值大于右值返回值需要大于0 - - - - - - - - 管理器模版 - 扩展内容不对外可见 - - 拓展接口 - - - - 当扩展被构建时 - - - - - 当扩展被构建时之后 - - - - - 自定义一个扩展构建器 - - 扩展构建器 - 扩展名 - - - - 释放指定扩展的构建器 - - 扩展名 - - - - 是否包含指定扩展构建器 - - 扩展名 - - - - 管理器 - - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 管理器模版(拓展解决方案为单例)- 扩展内容不对外可见 - - - - - 当扩展被释放时 - - - - - 释放指定的扩展实现 - - 扩展名 - - - - 是否包含指定的扩展实现 - - 扩展名 - 是否包含扩展实现 - - - - 管理器(拓展解决方案为单例) - - - - - 获取指定的扩展实现 - - 扩展名 - 扩展实现 - - - - 获取指定的扩展实现 - - 扩展名 - 扩展实现 - - - - 默认的扩展实现 - - - - - 管理器模版 - 不可被外部访问到的拓展 - - 拓展接口 - - - - 扩展解决器 - - - - - 当扩展被构建时 - - - - - 当扩展被构建时之后 - - - - - 构建一个新的管理器模板 - - - - - 自定义一个扩展构建器 - - 扩展构建器 - 扩展名 - - - - 释放指定扩展的构建器 - - 扩展名 - - - - 是否包含指定扩展构建器 - - 扩展名 - - - - 使用指定的扩展构建器生成扩展实现 - - 扩展名 - 扩展实现 - - - - 获取默认的扩展名 - - 默认的扩展名 - - - - 标准化扩展名 - - 扩展名 - - - - 获取扩展的构建闭包 - - 名字 - 拓展 - - - - 管理器模版 - - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 获取扩展实现 - - 扩展名 - 扩展实现 - - - - 管理器模版(拓展解决方案为单例)- 扩展内容不对外可见 - - - - - 扩展实现 - - - - - 当释放时 - - - - - 构建一个新的管理器模版 - - - - - 释放指定的扩展实现 - - 扩展名 - - - - 是否包含指定的扩展实现 - - 扩展名 - 是否包含扩展实现 - - - - 释放管理器时 - - - - - 释放扩展 - - 扩展实现 - - - - 生成扩展实现 - - 扩展名 - 扩展实现 - - - - 管理器模版(拓展解决方案为单例) - - - - - 获取指定的扩展实现 - - 扩展名 - 扩展实现 - - - - 默认的扩展实现 - - - - - 获取指定的扩展实现 - - 扩展名 - 扩展实现 - - - - 数组 - - - - - 将多个规定数组合并成一个数组 - - 数组类型 - 规定数组 - 合并后的数组 - - - - 从规定数组中获取一个或者指定数量的随机值 - - 数组类型 - 规定数组 - 随机的数量 - 随机后的元素 - - - - 将规定数组中的元素打乱 - - 数组类型 - 规定数组 - 种子 - 打乱后的数组 - - - - 从数组中移除指定长度的元素,如果给定了参数,那么新元素从位置开始插入 - - 数组类型 - 规定数组 - - 删除元素的开始位置。 - 如果该值设置为正数,则从前往后开始删除 - 如果该值设置为负数,则从后向前取 绝对值。-2 意味着从数组的倒数第二个元素开始 - - 删除元素的个数,也是被返回数组的长度 - 如果该值设置为整数,则返回该数量的元素。 - 如果该值设置为负数,则则从后向前取 绝对值位置终止删除。-1 意味着从数组的倒数第一个元素前删除 - 如果该值未设置,则返回从 参数设置的位置开始直到数组末端的所有元素。 - - 在start位置插入的数组 - 被删除的数组 - - - - 修剪数组 - - 数组类型 - 源数组 - 裁剪范围,负数为从后向前修剪 - - - - 将数组分为新的数组块 - 其中每个数组的单元数目由 参数决定。最后一个数组的单元数目可能会少几个。 - - 数组类型 - 规定数组 - 每个分块的大小 - - - - - 对数组进行填充,如果传入了规定数组,那么会在规定数组的基础上进行填充 - - 数组类型 - 起始下标 - 填充长度 - 填充的值 - 规定数组 - 填充后的数组 - - - - 将数组每个值传给回调函数,如果回调函数返回 true,则移除数组中对应的元素,并返回被移除的元素 - - 数组类型 - 规定数组 - 回调函数 - 被移除的数组 - - - - 输入数组中的每个值传给回调函数,如果回调函数返回 true,则把输入数组中的当前值加入结果数组中 - - 数组类型 - 规定数组 - 回调函数 - 需求数组 - - - - 将规定迭代器中的每个值传给回调函数,如果回调函数返回 true,则把规定迭代器中的当前值加入结果数组中 - - 数组类型 - 规定迭代器 - 回调函数 - 需求数组 - - - - 将数组值传入用户自定义函数,自定义函数返回的值作为新的数组值 - - 数组类型 - 返回值类型 - 规定数组 - 自定义函数 - 处理后的数组 - - - - 将迭代器的值传入用户自定义函数,自定义函数返回的值作为新的数组值 - - 数组类型 - 返回值类型 - 规定迭代器 - 自定义函数 - 处理后的数组 - - - - 删除数组中的最后一个元素,并将删除的元素作为返回值返回 - - 删除数组中的最后一个元素 - 规定数组 - 被删除的元素 - - - - 将一个或多个元素加入数组尾端 - - 数组类型 - 规定数组 - 要加入的元素 - 数组的元素个数 - - - - 向用户自定义函数发送数组中的值,并返回一个字符串 - 如果数组是空的且未传递参数,该函数返回 null - 如果指定了参数,则该参数将被当成是数组中的第一个值来处理,如果数组为空的话就作为最终返回值(string) - - 数组类型 - 规定数组 - 自定义函数 - 初始值 - - - - - 在数组中根据条件取出一段值,并返回。 - - 数组类型 - 规定数组 - - 取出元素的开始位置。 - 如果该值设置为正数,则从前往后开始取 - 如果该值设置为负数,则从后向前取 绝对值。-2 意味着从数组的倒数第二个元素开始 - - - 被返回数组的长度 - 如果该值设置为整数,则返回该数量的元素。 - 如果该值设置为负数,则则从后向前取 绝对值位置终止取出。-1 意味着从数组的倒数第一个元素前终止 - 如果该值未设置,则返回从 参数设置的位置开始直到数组末端的所有元素。 - - 取出的数组 - - - - 删除数组中第一个元素,并返回被删除元素的值 - - 数组类型 - 规定数组 - 被删除元素的值 - - - - 向数组插入新元素。新数组的值将被插入到数组的开头。 - - 数组类型 - 规定数组 - 插入的元素 - 数组元素个数 - - - - 以相反的顺序返回数组 - - 数组类型 - 规定数组 - - 起始元素的开始位置。 - 如果该值设置为正数,则从前往后开始取 - 如果该值设置为负数,则从后向前取 绝对值。-2 意味着从数组的倒数第二个元素开始 - - 被返回数组的长度 - 如果该值设置为整数,则返回该数量的元素。 - 如果该值设置为负数,则则从后向前取 绝对值位置终止取出。-1 意味着从数组的倒数第一个元素前终止 - 如果该值未设置,则返回从 参数设置的位置开始直到数组末端的所有元素。 - - 反转的数组 - - - - 从数组中检索符合全部匹配值的初始元素下标,如果返回-1则代表没有出现 - - 数组类型 - 规定数组 - 要匹配的值,如果有多个,只有全部的匹配才算匹配 - 如果要检索的值没有出现,则该方法返回 -1 - - - - 从数组中检索指定的任意匹配值所在的下标,如果返回-1则代表没有出现 - - 数组类型 - 规定数组 - 要匹配的值 - 如果要检索的值没有出现,则该方法返回 -1 - - - - 排除掉数组中的指定值 - - 数组类型 - 需要过滤的数组 - 数组需要排除掉的值 - 过滤后的数组 - - - - 移除并返回指定下标的数组元素 - 如果下标传入的是负数那么将会从末尾移除 - - 数组类型 - 规定数组 - 数组下标 - 被移除的元素 - - - - 临时性的回调元素,如果遇到异常或者完成回调后会进行回滚元素回调 - - 数组类型 - 规定数组 - 顺序回调 - 所有回调完成后 - 回滚回调 - - - - 自定义枚举 - - - - - 名字 - - - - - 构造一个枚举 - - - - - 转为字符串 - - 字符串 - - - - 是否相等 - - 对象 - 是否相等 - - - - 获取哈希码 - - 哈希吗 - - - - 自定义枚举转字符串 - - 自定义枚举转字符串 - - - - 是否相等 - - 左值 - 右值 - 是否相等 - - - - 是否不等 - - 左值 - 右值 - 是否不等 - - - - Int 扩展函数 - - - - - 计算规定值最近的二的次幂 - - 规定的值 - 容量 - - - - 字符串扩展 - - - - - 将指定字符串转为Stream流 - - 指定字符串 - 使用的编码 - - - - - 等待接口 - - 等待目标接口 - - - - 结果 - - - - - 等待接口 - - - - - 是否准备完成 - - - - - 实现 - - - - - 字符串 - - - - - 填充类型 - - - - - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。 - - - - - 填充字符串的左侧。 - - - - - 填充字符串的右侧。默认。 - - - - - 获取字符串所表达的函数名 - - 输入字符串 - 函数名 - - - - 将规定字符串翻译为星号匹配表达式 - 即删减正则表达式中除了星号外的所有功能 - - 匹配表达式 - 规定字符串 - 是否匹配 - - - - 将规定字符串翻译为星号匹配表达式 - 即删减正则表达式中除了星号外的所有功能 - - 规定字符串 - 处理后的字符串 - - - - 根据长度将字符串分割到数组中 - - 要分割的字符串 - 规定每个数组元素的长度。默认是 1。 - 分割的字符串 - - - - 将字符串重复指定的次数 - - 需要被重复的字符串 - 重复的次数 - 重复后的字符串 - - - - 随机打乱字符串中的所有字符 - - 需要被打乱的字符串 - 种子 - 被打乱的字符串 - - - - 计算子串在字符串中出现的次数 - 该函数不计数重叠的子串 - - 规定字符串 - 子字符串 - 起始位置 - 需要扫描的长度 - 扫描规则 - 子字符串出现的次数 - - - - 反转规定字符串 - - 规定字符串 - 反转后的字符串 - - - - 把字符串填充为新的长度。 - - 规定要填充的字符串 - 规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。 - - 规定供填充使用的字符串。默认是空白。 - 如果传入的字符串长度小于等于0那么会使用空白代替。 - 注释:空白不是空字符串 - - - 规定填充字符串的哪边。 - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。 - 填充字符串的左侧。 - 填充字符串的右侧。默认。 - - 被填充的字符串 - - - - 在规定字符串中查找在规定搜索值,并在规定搜索值之后返回规定字符串的剩余部分。 - 如果没有找到则返回规定字符串本身 - - 规定字符串 - 规定搜索值 - 剩余部分 - - - - 判断规定字符串是否包含规定子字符串 - 子字符串是识别大小写的 - - - 规定字符串 - 规定子字符串 - 是否包含 - - - - 在规定字符串中替换匹配项 - - 匹配项 - 替换的值 - 规定字符串 - - - - - 替换规定字符串中第一次遇到的匹配项 - 该函数对大小写敏感 - - 匹配项 - 替换的内容 - 规定字符串 - 替换后的字符串 - - - - 替换规定字符串中从后往前第一次遇到的匹配项 - 该函数对大小写敏感 - - 匹配项 - 替换的内容 - 规定字符串 - 替换后的字符串 - - - - 生成一个随机字母(含大小写),数字的字符串。 - - 字符串长度 - 种子 - 随机的字符串 - - - - 如果长度超过给定的最大字符串长度,则截断字符串。 截断的字符串的最后一个字符将替换为缺省字符串 - eg: Str.Truncate("hello world , the sun is shine",15," ") => hello world... - - 要截断的字符串 - 截断长度(含缺省字符长度) - 临近的分隔符,如果设定则截断长度为截断长度最近的分隔符位置,如果传入的是一个正则表达式那么使用正则匹配。 - 缺省字符 - 截断后的字符串 - - - - Stream扩展函数 - - - - - 将当前流追加到目标流中 - - 源数据流 - 目标数据流 - 总共传输了多少数据 - - - - 将当前流追加到目标流中 - - 源数据流 - 目标数据流 - 所使用的缓冲区 - 总共传输了多少数据 - - - - 将流转为字符串 - - 源数据流 - 编码 - 是否自动关闭流 - 字符串 - - - - 时间 - - - - - 将linux时间戳转为DateTime - - 时间戳 - DateTime - - - - 转为Linux时间戳 - - DateTime(本地时间) - linux时间戳 - - - - Utc时间 - - - - - 线程静态暂存对象 - - - - - 默认的缓冲区 - - - - - 默认缓冲区 - - - - - 通用支持 - - - - - 编码 - - - - - 通用支持初始化时 - - - - - 获取优先级 - - 识别的类型 - 识别的方法 - 优先级 - - - - 构建一个随机生成器 - - 种子 - 随机生成器 - - - - 生成种子 - - 种子 - - - - 标准化位置 - - 源长度 - 起始位置 - 作用长度 - - - - 版本(遵循semver) - - - - - 版本匹配正则式 - - - - - 版本匹配正则式 - - - - - 原始版本信息 - - - - - 版本信息 - - - - - 版本信息 - - - - - 主版本号 - - - - - 次版本号 - - - - - 修订版本号 - - - - - 先行版本号 - - - - - 版本编译信息 - - - - - 版本信息 - - - - - - 构造一个版本 - - 主版本号 - 次版本号 - 修订版本号 - - - - 构造一个版本 - - 版本号 - - - - 将当前版本和输入版本进行比较 - 输入版本大于当前版本则返回-1 - 输入版本等于当前版本则返回0 - 输入版本小于当前版本则返回1 - - 输入版本 - 比较结果 - - - - 比较左值和右值 - 如果左值大于右值那么返回1 - 如果左值等于右值那么返回0 - 如果左值小于右值那么返回-1 - - 左值 - 右值 - - - - 验证输入版本 - - 输入版本 - - - - 转为字符串 - - 版本信息 - - - diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml.meta deleted file mode 100644 index 2d1dc8f0d..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35/CatLib.Core.xml.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 184aa957e7f11e64f999031200133c0d -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json deleted file mode 100644 index 0c839712a..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "com.catlib.core", - "displayName" : "CatLib.Core", - "version": "1.3.1", - "description": "CatLib Core is dependency injection container", - "license": "MIT", - "homepage": "https://github.com/catlib/core", - "keywords": [ - "catlib", - "core", - "unity", - "container", - "di", - "ioc" - ], - "category": "framework", - "repository": { - "type": "git", - "url": "git@github.com:catlib/core.git" - }, - "dependencies": {}, - "unity": "2018.1" -} diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json.meta b/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json.meta deleted file mode 100644 index 126fdb107..000000000 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/package.json.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2b3e76effc90cb144b34acb50f8d9ea4 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC.meta similarity index 57% rename from Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35.meta rename to Assets/QFramework/Framework/0.Core/Plugins/IOC.meta index 22e2d5739..08127d943 100644 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core/net35.meta +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 -guid: 65365ee6976e3b447a6055bca91bf46a +guid: 46821df6c719631499adc228c85be1f3 folderAsset: yes +timeCreated: 1442181957 +licenseType: Store DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes.meta similarity index 57% rename from Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager.meta rename to Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes.meta index 23a1b6d4c..ca3c9bf7e 100644 --- a/Assets/QFramework/Framework/0.Core/9.PackageManager/Editor/PackageManager.meta +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 -guid: b12bbc033c97c4d409fcb038c066fab7 +guid: 66009780274e1024db44e18074bee004 folderAsset: yes +timeCreated: 1442131763 +licenseType: Store DefaultImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs new file mode 100644 index 000000000..c962c9535 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs @@ -0,0 +1,180 @@ +using System; + +namespace QFramework +{ + public class ActionMetaAttribute : Attribute + { + + } + + public class AsyncAction : ActionMetaAttribute + { + + } + + public class ActionTypeSelection : ActionAttribute + { + public Type AssignableTo { get; set; } + } + public class ActionTitle : ActionMetaAttribute + { + public string Title { get; set; } + + public ActionTitle() + { + } + + public ActionTitle(string title) + { + Title = title; + } + } + + public class ActionTypeConverter : ActionTitle + { + + public ActionTypeConverter() + { + } + + } + public class ActionDescription : ActionMetaAttribute + { + public string Description { get; set; } + + public ActionDescription(string description) + { + Description = description; + } + } + + public class Description : ActionAttribute + { + public string Text { get; set; } + + public Description(string text) + { + Text = text; + } + } + + public class Optional : ActionAttribute + { + } + + public class ActionAttribute : ActionMetaAttribute + { + + } + + public class FieldDisplayTypeAttribute : ActionAttribute + { + public FieldDisplayTypeAttribute(string displayName) + { + DisplayName = displayName; + } + + public FieldDisplayTypeAttribute() + { + } + + private bool _isNewLine = true; + public string DisplayName { get; set; } + + public string ParameterName { get; set; } + + //public int Row { get; set; } + + public FieldDisplayTypeAttribute(string parameterName, string displayName) + { + ParameterName = parameterName; + DisplayName = displayName; + } + + public FieldDisplayTypeAttribute(string parameterName, string displayName, bool isNewLine) + { + ParameterName = parameterName; + DisplayName = displayName; + _isNewLine = isNewLine; + } + + public bool IsNewLine + { + get { return _isNewLine; } + set { _isNewLine = value; } + } + } + + public class ActionLibrary : Attribute + { + + } + public class In : FieldDisplayTypeAttribute + { + public In() + { + } + + public In(string parameterName, string displayName) + : base(parameterName, displayName) + { + } + + public In(string displayName) + : base(displayName) + { + } + + public In(string parameterName, string displayName, bool isNewLine) + : base(parameterName, displayName, isNewLine) + { + } + } + public class Out : FieldDisplayTypeAttribute + { + public Out() + { + } + + public Out(string parameterName, string displayName) + : base(parameterName, displayName) + { + } + + public Out(string displayName) + : base(displayName) + { + } + + public Out(string parameterName, string displayName, bool isNewLine) + : base(parameterName, displayName, isNewLine) + { + } + } + public class QFrameworkEvent : Attribute + { + public string Title { get; set; } + + public QFrameworkEvent() + { + } + + public QFrameworkEvent(string title) + { + Title = title; + } + + } + + + public class QFrameworkCategory : Attribute + { + public string[] Title { get; set; } + public QFrameworkCategory(params string[] title) + { + Title = title; + } + + + } +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs.meta new file mode 100644 index 000000000..e30b61ba9 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9e0e79bbe44438544a99c727ae12c274 +timeCreated: 1442086643 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs new file mode 100644 index 000000000..36e3dfdbe --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs @@ -0,0 +1,14 @@ +namespace QFramework +{ + public class QFrameworkEventDispatcher : QFrameworkEvent + { + public QFrameworkEventDispatcher() + { + } + + public QFrameworkEventDispatcher(string title) + : base(title) + { + } + } +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs.meta new file mode 100644 index 000000000..252cc91d5 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/QFrameworkEventDispatcher.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4968c166525ddae48ab8a21c133f7800 +timeCreated: 1442086643 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs new file mode 100644 index 000000000..4dbe5fffe --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs @@ -0,0 +1,15 @@ +namespace QFramework +{ + public class SystemQFrameworkEvent : QFrameworkEvent + { + + public SystemQFrameworkEvent(string title, string systemMethodName) + : base(title) + { + SystemMethodName = systemMethodName; + } + + public string SystemMethodName { get; set; } + } + +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs.meta new file mode 100644 index 000000000..6978dd858 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/Attributes/SystemQFrameworkEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 48d57e3f80709ff4292be12ef53041c8 +timeCreated: 1442086643 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs new file mode 100644 index 000000000..ad20639a1 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs @@ -0,0 +1,10 @@ +using System.Collections; + +public class DebugInfo +{ + public string PreviousId; + public string ActionId; + public object[] Variables; + + public int Result { get; set; } +} diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs.meta new file mode 100644 index 000000000..4765a7a54 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/DebugInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 432874ce0e3b8004b8156904a952eac7 +timeCreated: 1442295379 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef new file mode 100644 index 000000000..e9bac5488 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef @@ -0,0 +1,3 @@ +{ + "name": "uFrameCommon" +} diff --git a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef.meta similarity index 54% rename from Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core.meta rename to Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef.meta index 9e33c1ca7..5f33a6c4c 100644 --- a/Assets/QFramework/Framework/0.Core/Plugins/CatLib.Core.meta +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IOC.asmdef.meta @@ -1,9 +1,8 @@ fileFormatVersion: 2 -guid: aa5d5ee9455b9ca4ca3fa51fc5b5c88d -folderAsset: yes -timeCreated: 1548037538 +guid: 58dc4c029ea09bc4fab689b0e7b23b35 +timeCreated: 1548498064 licenseType: Free -DefaultImporter: +AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs new file mode 100644 index 000000000..a026ad8f1 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; + +namespace QFramework +{ + public interface IQFrameworkContainer + { + /// + /// Clears all type mappings and instances. + /// + void Clear(); + + /// + /// Injects registered types/mappings into an object + /// + /// + void Inject(object obj); + + /// + /// Injects everything that is registered at once + /// + void InjectAll(); + + /// + /// Register a type mapping + /// + /// The base type. + /// The concrete type + void Register(string name = null); + + void RegisterRelation(); + + /// + /// Register an instance of a type. + /// + /// + /// + /// + /// + void RegisterInstance(TBase @default, bool injectNow) where TBase : class; + + /// + /// Register an instance of a type. + /// + /// + /// + /// + /// + void RegisterInstance(Type type, object @default, bool injectNow); + + /// + /// Register a named instance + /// + /// The type to register the instance for. + /// The name for the instance to be resolved. + /// The instance that will be resolved be the name + /// Perform the injection immediately + void RegisterInstance(Type baseType, object instance = null, string name = null, bool injectNow = true); + + void RegisterInstance(TBase instance, string name, bool injectNow = true) where TBase : class; + + void RegisterInstance(TBase instance) where TBase : class; + + /// + /// If an instance of T exist then it will return that instance otherwise it will create a new one based off mappings. + /// + /// The type of instance to resolve + /// The/An instance of 'instanceType' + T Resolve(string name = null, bool requireInstance = false, params object[] args) where T : class; + + TBase ResolveRelation(Type tfor, params object[] arg); + + TBase ResolveRelation(params object[] arg); + + /// + /// Resolves all instances of TType or subclasses of TType. Either named or not. + /// + /// The Type to resolve + /// List of objects. + IEnumerable ResolveAll(); + + //IEnumerable ResolveAll(Type type); + void Register(Type source, Type target, string name = null); + + /// + /// Resolves all instances of TType or subclasses of TType. Either named or not. + /// + /// The Type to resolve + /// List of objects. + IEnumerable ResolveAll(Type type); + + TypeMappingCollection Mappings { get; set; } + TypeInstanceCollection Instances { get; set; } + TypeRelationCollection RelationshipMappings { get; set; } + + /// + /// If an instance of instanceType exist then it will return that instance otherwise it will create a new one based off mappings. + /// + /// The type of instance to resolve + /// The type of instance to resolve + /// If true will return null if an instance isn't registered. + /// The/An instance of 'instanceType' + object Resolve(Type baseType, string name = null, bool requireInstance = false, params object[] constructorArgs); + + object ResolveRelation(Type tfor, Type tbase, params object[] arg); + void RegisterRelation(Type tfor, Type tbase, Type tconcrete); + object CreateInstance(Type type, params object[] args); + } +} diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs.meta new file mode 100644 index 000000000..1ef57beb8 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/IQFrameworkContainer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 87d66fdf1863a7145b3996250f88014a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs new file mode 100644 index 000000000..eda319063 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs @@ -0,0 +1,25 @@ +using System; + + +namespace QFramework + +{ + /// + /// Used by the injection container to determine if a property or field should be injected. + /// + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public class InjectAttribute : Attribute + { + public InjectAttribute(string name) + { + Name = name; + } + + public string Name { get; set; } + + public InjectAttribute() + { + } + } + +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs.meta new file mode 100644 index 000000000..b342135f1 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/InjectAttribute.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: bc6dd7ffdbe2dd54f911f21c446086db +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs new file mode 100644 index 000000000..c2635566c --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs @@ -0,0 +1,1493 @@ +//#define USE_SharpZipLib + +/* * * * * + * \dontinclude SimpleJSON.cs + * A simple JSON Parser / builder + * ------------------------------ + * + * It mainly has been written as a simple JSON parser. It can build a JSON string + * from the node-tree, or generate a node tree from any valid JSON string. + * + * If you want to use compression when saving to file / stream / B64 you have to include + * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and + * define "USE_SharpZipLib" at the top of the file + * + * Written by Bunny83 + * 2012-06-09 + * + * Features / attributes: + * - provides strongly typed node classes and lists / dictionaries + * - provides easy access to class members / array items / data values + * - the parser ignores data types. Each value is a string. + * - only double quotes (") are used for quoting strings. + * - values and names are not restricted to quoted strings. They simply add up and are trimmed. + * - There are only 3 types: arrays(JSONArray), objects(JSONClass) and values(JSONData) + * - provides "casting" properties to easily convert to / from those types: + * int / float / double / bool + * - provides a common interface for each node so no explicit casting is required. + * - the parser try to avoid errors, but if malformed JSON is parsed the result is undefined + * + * + * 2012-12-17 Update: + * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree + * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator + * The class determines the required type by it's further use, creates the type and removes itself. + * - Added binary serialization / deserialization. + * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) + * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top + * - The serializer uses different types when it comes to store the values. Since my data values + * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string. + * It's not the most efficient way but for a moderate amount of data it should work on all platforms. + * + * * * * */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QFramework.Json +{ + [AttributeUsage(AttributeTargets.Property)] + public class JsonProperty : Attribute + { + + } + public static class JsonExtensions + { + + public static T DeserializeObject(string json) + { + return DeserializeObject(Json.JSON.Parse(json)); + } + + public static T DeserializeObject(JSONNode node) + { + return (T)DeserializeObject(typeof(T), node); + } + + public static object DeserializeObject(Type type, JSONNode node) + { + //Handle special types first + + if (type == typeof(Guid)) return new Guid(node.Value); + + + if (type == typeof(int)) return node.AsInt; + if (type == typeof(Vector2)) return node.AsVector2; + if (type == typeof(Vector3)) return node.AsVector3; + if (type == typeof(string)) return node.Value; + if (type == typeof(bool)) return node.AsBool; + if (type == typeof(float)) return node.AsFloat; + if (type == typeof(double)) return node.AsDouble; + + //if + if (type == typeof(DateTime)) + { + return DateTime.Parse(node.Value); + } + + //if none of above works, check for collection + if (typeof(IList).IsAssignableFrom(type)) // collection detected + { + var jsonArray = node as JSONArray; + if (jsonArray == null) return null; + + var itemType = type.GetGenericArguments()[0]; + var listType = typeof(List<>).MakeGenericType(new[] { itemType }); + var list = (IList)System.Activator.CreateInstance(listType); + + foreach (var instance in jsonArray.Childs) + { + list.Add(DeserializeObject(itemType, instance)); + } + + return list; + } + + //try enum detection + + if (type.IsEnum) + { + return Enum.ToObject(type, node.AsInt); + } + + //If enum is not the case, POCO-TIME! + + var jsonClass = node as JSONClass; + if (jsonClass == null) return null; + + var poco = DeserializeExistingObject(Activator.CreateInstance(type), jsonClass); + + return poco; + } + + public static object DeserializeExistingObject(object poco, JSONClass jsonClass) + { + if (jsonClass == null) return null; + + var properties = poco.GetType().GetProperties(); + foreach (var propertyInfo in properties) + { + if (propertyInfo.IsDefined(typeof(JsonProperty), true) || propertyInfo.Name == "Identifier") + { + if (jsonClass[propertyInfo.Name] != null) + { + var deserializedObject = DeserializeObject(propertyInfo.PropertyType, jsonClass[propertyInfo.Name]); + propertyInfo.SetValue(poco, deserializedObject, null); + } + } + } + return poco; + } + + public static JSONNode SerializeObject(object target) + { + if (target == null) return new JSONNode(); + + var objectType = target.GetType(); + + + //Handle special types first + if (objectType == typeof(Guid)) + { + return new JSONData(target.ToString()); + } + //primitive detection + var node = SerializePrimitive(target); + if (node != null) + { + return node; + } + + //if + if (objectType == typeof(DateTime)) + { + var t = (DateTime)target; + return new JSONData(t.ToString()); + } + + + if (typeof(IList).IsAssignableFrom(objectType)) // collection detected + { + + //var type = objectType.GetGenericArguments()[0]; + var list = target as IEnumerable; + var jsonArray = new JSONArray(); + + if (list != null) + foreach (var instance in list) + { + jsonArray.Add(SerializeObject(instance)); + } + + return jsonArray; + } + + + + + + //enum detection + + if (objectType.IsEnum) + { + return new JSONData((int)target); + } + + + //poco-like detection + + JSONClass result = new JSONClass(); + + var properties = target.GetType().GetProperties(); + foreach (var propertyInfo in properties) + { + if (propertyInfo.IsDefined(typeof(JsonProperty), true) || propertyInfo.Name == "Identifier") + { + var value = propertyInfo.GetValue(target, null); + if (value != null) + { + result.Add(propertyInfo.Name, SerializeObject(value)); + } + + } + + } + + return result; + + } + + private static JSONNode SerializePrimitive(object value) + { + JSONNode node = null; + var type = value.GetType(); + if (type == typeof(int)) node = new JSONData((int)value); + else if (type == typeof(Vector2)) node = new JSONClass() { AsVector2 = (Vector2)value }; + else if (type == typeof(Vector3)) node = new JSONClass() { AsVector3 = (Vector3)value }; + else if (type == typeof(string)) node = new JSONData((string)value); + else if (type == typeof(bool)) node = new JSONData((bool)value); + else if (type == typeof(float)) node = new JSONData((float)value); + else if (type == typeof(double)) node = new JSONData((double)value); + return node; + } + + } + public static class JSON + { + public static JSONNode Parse(string aJSON) + { + return JSONNode.Parse(aJSON); + } + } + public enum JSONBinaryTag + { + Array = 1, + Class = 2, + Value = 3, + IntValue = 4, + DoubleValue = 5, + BoolValue = 6, + FloatValue = 7, + } + public class JSONClass : JSONNode, IEnumerable + { + private Dictionary m_Dict = new Dictionary(); + + public override IEnumerable Childs + { + get + { + foreach (KeyValuePair N in m_Dict) + yield return N.Value; + } + } + + public override int Count + { + get { return m_Dict.Count; } + } + + public override JSONNode this[string aKey] + { + get + { + if (m_Dict.ContainsKey(aKey)) + return m_Dict[aKey]; + else + return new JSONLazyCreator(this, aKey); + } + set + { + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = value; + else + m_Dict.Add(aKey, value); + } + } + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + return m_Dict.ElementAt(aIndex).Value; + } + set + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return; + string key = m_Dict.ElementAt(aIndex).Key; + m_Dict[key] = value; + } + } + + public override void Add(string aKey, JSONNode aItem) + { + if (!string.IsNullOrEmpty(aKey)) + { + if (m_Dict.ContainsKey(aKey)) + m_Dict[aKey] = aItem; + else + m_Dict.Add(aKey, aItem); + } + else + m_Dict.Add(Guid.NewGuid().ToString(), aItem); + } + + public IEnumerator GetEnumerator() + { + foreach (KeyValuePair N in m_Dict) + yield return N; + } + + public override JSONNode Remove(string aKey) + { + if (!m_Dict.ContainsKey(aKey)) + return null; + JSONNode tmp = m_Dict[aKey]; + m_Dict.Remove(aKey); + return tmp; + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_Dict.Count) + return null; + var item = m_Dict.ElementAt(aIndex); + m_Dict.Remove(item.Key); + return item.Value; + } + + public override JSONNode Remove(JSONNode aNode) + { + try + { + var item = m_Dict.Where(k => k.Value == aNode).First(); + m_Dict.Remove(item.Key); + return aNode; + } + catch + { + return null; + } + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONBinaryTag.Class); + aWriter.Write(m_Dict.Count); + foreach (string K in m_Dict.Keys) + { + aWriter.Write(K); + m_Dict[K].Serialize(aWriter); + } + } + + public override string ToString() + { + return ToString(false); + } + public override string ToString(bool isRoot) + { + + if (isRoot) + { + TabIndex = 0; + } + string result = TabString + "{"; + result += Environment.NewLine; + TabIndex++; + var i = 0; + foreach (KeyValuePair N in m_Dict) + { + if (i > 0) + result += TabString + ", " + Environment.NewLine; + result += TabString + string.Format("\"{0}\":{1}", Escape(N.Key), N.Value.ToString()); + i++; + } + TabIndex--; + result += TabString + "}" + Environment.NewLine; + return result; + } + + public override string ToString(string aPrefix) + { + string result = "{ "; + result += Environment.NewLine; + TabIndex++; + foreach (KeyValuePair N in m_Dict) + { + if (result.Length > 3) + result += ", "; + result += string.Format("\n{0} ", aPrefix); + result += string.Format("\"{0}\" : {1}", Escape(N.Key), N.Value.ToString(aPrefix + " ")); + } + result += string.Format("\n{0}}}", aPrefix); + TabIndex--; + result += "}" + Environment.NewLine; + return result; + } + } + public class JSONData : JSONNode + { + private string m_Data; + + public override string Value + { + get { return m_Data; } + set { m_Data = value; } + } + + public JSONData(Vector3 value) + { + AsVector3 = value; + } + public JSONData(Vector2 value) + { + AsVector2 = value; + } +#if UNITY + public JSONData(Quaternion value) + { + AsQuaternion = value; + } +#endif + + public JSONData(string aData) + { + m_Data = aData; + } + + public JSONData(string aData, bool forceString) + { + m_Data = aData; + _forceString = forceString; + } + + private bool _forceString { get; set; } + + public JSONData(float aData) + { + AsFloat = aData; + } + + public JSONData(double aData) + { + AsDouble = aData; + } + + public JSONData(bool aData) + { + AsBool = aData; + } + + public JSONData(int aData) + { + AsInt = aData; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + var tmp = new JSONData(""); + + tmp.AsInt = AsInt; + if (tmp.m_Data == this.m_Data) + { + aWriter.Write((byte)JSONBinaryTag.IntValue); + aWriter.Write(AsInt); + return; + } + tmp.AsFloat = AsFloat; + if (tmp.m_Data == this.m_Data) + { + aWriter.Write((byte)JSONBinaryTag.FloatValue); + aWriter.Write(AsFloat); + return; + } + tmp.AsDouble = AsDouble; + if (tmp.m_Data == this.m_Data) + { + aWriter.Write((byte)JSONBinaryTag.DoubleValue); + aWriter.Write(AsDouble); + return; + } + + tmp.AsBool = AsBool; + if (tmp.m_Data == this.m_Data) + { + aWriter.Write((byte)JSONBinaryTag.BoolValue); + aWriter.Write(AsBool); + return; + } + aWriter.Write((byte)JSONBinaryTag.Value); + aWriter.Write(m_Data); + } + + public override string ToString() + { + + if (_forceString) + { + return string.Format("\"{0}\"", Escape(m_Data)); + } + + var tmp = new JSONData(""); + + tmp.AsInt = AsInt; + + if (tmp.m_Data == this.m_Data) + { + return string.Format("{0}", Escape(m_Data)); + } + + tmp.AsBool = AsBool; + + if (tmp.m_Data == this.m_Data) + { + return string.Format("{0}", Escape(m_Data)); + } + + return string.Format("\"{0}\"", Escape(m_Data)); + } + + public override string ToString(string aPrefix) + { + + + + if (_forceString) + { + return string.Format("\"{0}\"", Escape(m_Data)); + } + + var tmp = new JSONData(""); + tmp.AsInt = AsInt; + + if (tmp.m_Data == this.m_Data) + { + return string.Format("{0}", Escape(m_Data)); + } + + tmp.AsBool = AsBool; + + if (tmp.m_Data == this.m_Data) + { + return string.Format("{0}", Escape(m_Data)); + } + + return string.Format("\"{0}\"", Escape(m_Data)); + } + } + public class JSONLazyCreator : JSONNode + { + private string m_Key = null; + private JSONNode m_Node = null; + + public override JSONArray AsArray + { + get + { + JSONArray tmp = new JSONArray(); + Set(tmp); + return tmp; + } + } + + public override bool AsBool + { + get + { + JSONData tmp = new JSONData(false); + Set(tmp); + return false; + } + set + { + JSONData tmp = new JSONData(value); + Set(tmp); + } + } + + public override double AsDouble + { + get + { + JSONData tmp = new JSONData(0.0); + Set(tmp); + return 0.0; + } + set + { + JSONData tmp = new JSONData(value); + Set(tmp); + } + } + + public override float AsFloat + { + get + { + JSONData tmp = new JSONData(0.0f); + Set(tmp); + return 0.0f; + } + set + { + JSONData tmp = new JSONData(value); + Set(tmp); + } + } + + public override int AsInt + { + get + { + JSONData tmp = new JSONData(0); + Set(tmp); + return 0; + } + set + { + JSONData tmp = new JSONData(value); + Set(tmp); + } + } + + public override JSONClass AsObject + { + get + { + JSONClass tmp = new JSONClass(); + Set(tmp); + return tmp; + } + } + + public override JSONNode this[int aIndex] + { + get + { + return new JSONLazyCreator(this); + } + set + { + var tmp = new JSONArray(); + tmp.Add(value); + Set(tmp); + } + } + + public override JSONNode this[string aKey] + { + get + { + return new JSONLazyCreator(this, aKey); + } + set + { + var tmp = new JSONClass(); + tmp.Add(aKey, value); + Set(tmp); + } + } + + public JSONLazyCreator(JSONNode aNode) + { + m_Node = aNode; + m_Key = null; + } + + public JSONLazyCreator(JSONNode aNode, string aKey) + { + m_Node = aNode; + m_Key = aKey; + } + + public static bool operator !=(JSONLazyCreator a, object b) + { + return !(a == b); + } + + public static bool operator ==(JSONLazyCreator a, object b) + { + if (b == null) + return true; + return System.Object.ReferenceEquals(a, b); + } + + public override void Add(JSONNode aItem) + { + var tmp = new JSONArray(); + tmp.Add(aItem); + Set(tmp); + } + + public override void Add(string aKey, JSONNode aItem) + { + var tmp = new JSONClass(); + tmp.Add(aKey, aItem); + Set(tmp); + } + + public override bool Equals(object obj) + { + if (obj == null) + return true; + return System.Object.ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override string ToString() + { + return ""; + } + + public override string ToString(string aPrefix) + { + return ""; + } + + private void Set(JSONNode aVal) + { + if (m_Key == null) + { + m_Node.Add(aVal); + } + else + { + m_Node.Add(m_Key, aVal); + } + m_Node = null; // Be GC friendly. + } + } + public class JSONNode + { + public static int TabIndex { get; set; } + + public static string TabString + { + get + { + var str = ""; + for (var i = 0; i < TabIndex; i++) + { + str += "\t"; + } + return str; + } + } + #region common interface + + public virtual IEnumerable Childs { get { yield break; } } + + public virtual int Count { get { return 0; } } + + public IEnumerable DeepChilds + { + get + { + foreach (var C in Childs) + foreach (var D in C.DeepChilds) + yield return D; + } + } + + public virtual string Value { get { return ""; } set { } } + + public virtual JSONNode this[int aIndex] { get { return new JSONNode(); } set { } } + + public virtual JSONNode this[string aKey] { get { return new JSONNode(); } set { } } + + public virtual void Add(string aKey, JSONNode aItem) + { + } + + public virtual void Add(JSONNode aItem) + { + Add("", aItem); + } + + public virtual JSONNode Remove(string aKey) + { + return null; + } + + public virtual JSONNode Remove(int aIndex) + { + return null; + } + + public virtual JSONNode Remove(JSONNode aNode) + { + return aNode; + } + + public virtual string ToString(bool isRoot) + { + return ToString(); + } + public override string ToString() + { + return "JSONNode"; + } + + public virtual string ToString(string aPrefix) + { + return "JSONNode"; + } + + #endregion common interface + + #region typecasting properties + + public virtual JSONArray AsArray + { + get + { + return this as JSONArray ?? new JSONArray(); + } + } + + public virtual bool AsBool + { + get + { + bool v = false; + if (bool.TryParse(Value, out v)) + return v; + return !string.IsNullOrEmpty(Value); + } + set + { + Value = (value) ? "true" : "false"; + } + } + + public virtual double AsDouble + { + get + { + double v = 0.0; + if (double.TryParse(Value, out v)) + return v; + return 0.0; + } + set + { + Value = value.ToString(); + } + } + + public virtual float AsFloat + { + get + { + float v = 0.0f; + if (Value == null) return 0.0f; + if (float.TryParse(Value, out v)) + return v; + return 0.0f; + } + set + { + Value = value.ToString(); + } + } + + public virtual int AsInt + { + get + { + int v = 0; + if (int.TryParse(Value, out v)) + return v; + return 0; + } + set + { + Value = value.ToString(); + } + } + + public virtual JSONClass AsObject + { + get + { + return this as JSONClass; + } + } +#if !PORTABLE && !DLL + public virtual Quaternion AsQuaternion + { + get + { + return Quaternion.Euler(AsVector3); + } + set + { + var euler = value.eulerAngles; + var ob = this.AsObject; + ob.Add("x", new JSONData(euler.x)); + ob.Add("y", new JSONData(euler.y)); + ob.Add("z", new JSONData(euler.z)); + } + } +#endif + public virtual Vector2 AsVector2 + { + get + { + var cl = this as JSONClass; + return new Vector2(cl["x"].AsFloat, cl["y"].AsFloat); + } + set + { + var ob = this.AsObject; + ob.Add("x", new JSONData(value.x)); + ob.Add("y", new JSONData(value.y)); + } + } + + public virtual Vector3 AsVector3 + { + get + { + return new Vector3(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat); + } + set + { + var ob = this.AsObject; + ob.Add("x", new JSONData(value.x)); + ob.Add("y", new JSONData(value.y)); + ob.Add("z", new JSONData(value.z)); + //this["x"].AsFloat = value.x; + //this["y"].AsFloat = value.x; + //this["z"].AsFloat = value.x; + } + } + + public virtual Vector4 AsVector4 + { + get + { + var cl = this as JSONClass; + return new Vector4(cl["x"].AsFloat, cl["y"].AsFloat, cl["z"].AsFloat, cl["w"].AsFloat); + } + set + { + var ob = this.AsObject; + ob.Add("x", new JSONData(value.x)); + ob.Add("y", new JSONData(value.y)); + ob.Add("z", new JSONData(value.z)); + ob.Add("w", new JSONData(value.w)); + } + } + + #endregion typecasting properties + + #region operators + + public static implicit operator JSONNode(string s) + { + return new JSONData(s); + } + + public static implicit operator string(JSONNode d) + { + return (d == null) ? null : d.Value; + } + + public static bool operator !=(JSONNode a, object b) + { + return !(a == b); + } + + public static bool operator ==(JSONNode a, object b) + { + if (b == null && a is JSONLazyCreator) + return true; + return System.Object.ReferenceEquals(a, b); + } + + public override bool Equals(object obj) + { + return System.Object.ReferenceEquals(this, obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + #endregion operators + + public static JSONNode Deserialize(System.IO.BinaryReader aReader) + { + JSONBinaryTag type = (JSONBinaryTag)aReader.ReadByte(); + switch (type) + { + case JSONBinaryTag.Array: + { + int count = aReader.ReadInt32(); + JSONArray tmp = new JSONArray(); + for (int i = 0; i < count; i++) + tmp.Add(Deserialize(aReader)); + return tmp; + } + case JSONBinaryTag.Class: + { + int count = aReader.ReadInt32(); + JSONClass tmp = new JSONClass(); + for (int i = 0; i < count; i++) + { + string key = aReader.ReadString(); + var val = Deserialize(aReader); + tmp.Add(key, val); + } + return tmp; + } + case JSONBinaryTag.Value: + { + return new JSONData(aReader.ReadString()); + } + case JSONBinaryTag.IntValue: + { + return new JSONData(aReader.ReadInt32()); + } + case JSONBinaryTag.DoubleValue: + { + return new JSONData(aReader.ReadDouble()); + } + case JSONBinaryTag.BoolValue: + { + return new JSONData(aReader.ReadBoolean()); + } + case JSONBinaryTag.FloatValue: + { + return new JSONData(aReader.ReadSingle()); + } + + default: + { + throw new Exception("Error deserializing JSON. Unknown tag: " + type); + } + } + } + + public static JSONNode LoadFromBase64(string aBase64) + { + var tmp = System.Convert.FromBase64String(aBase64); + var stream = new System.IO.MemoryStream(tmp); + stream.Position = 0; + return LoadFromStream(stream); + } + + public static JSONNode LoadFromCompressedBase64(string aBase64) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public static JSONNode LoadFromCompressedFile(string aFileName) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public static JSONNode LoadFromFile(string aFileName) + { + using (var F = System.IO.File.OpenRead(aFileName)) + { + return LoadFromStream(F); + } + } + + public static JSONNode LoadFromStream(System.IO.Stream aData) + { + using (var R = new System.IO.BinaryReader(aData)) + { + return Deserialize(R); + } + } + + public static JSONNode Parse(string aJSON) + { + Stack stack = new Stack(); + JSONNode ctx = null; + int i = 0; + string Token = ""; + string TokenName = ""; + bool QuoteMode = false; + while (i < aJSON.Length) + { + switch (aJSON[i]) + { + case '{': + if (QuoteMode) + { + Token += aJSON[i]; + break; + } + stack.Push(new JSONClass()); + if (ctx != null) + { + TokenName = TokenName.Trim(); + if (ctx is JSONArray) + ctx.Add(stack.Peek()); + else if (TokenName != "") + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token = ""; + ctx = stack.Peek(); + break; + + case '[': + if (QuoteMode) + { + Token += aJSON[i]; + break; + } + + stack.Push(new JSONArray()); + if (ctx != null) + { + TokenName = TokenName.Trim(); + if (ctx is JSONArray) + ctx.Add(stack.Peek()); + else if (TokenName != "") + ctx.Add(TokenName, stack.Peek()); + } + TokenName = ""; + Token = ""; + ctx = stack.Peek(); + break; + + case '}': + case ']': + if (QuoteMode) + { + Token += aJSON[i]; + break; + } + if (stack.Count == 0) + throw new Exception("JSON Parse: Too many closing brackets"); + + stack.Pop(); + if (Token != "") + { + TokenName = TokenName.Trim(); + if (ctx is JSONArray) + ctx.Add(Token); + else if (TokenName != "") + ctx.Add(TokenName, Token); + } + TokenName = ""; + Token = ""; + if (stack.Count > 0) + ctx = stack.Peek(); + break; + + case ':': + if (QuoteMode) + { + Token += aJSON[i]; + break; + } + TokenName = Token; + Token = ""; + break; + + case '"': + QuoteMode ^= true; + break; + + case ',': + if (QuoteMode) + { + Token += aJSON[i]; + break; + } + if (Token != "") + { + if (ctx is JSONArray) + ctx.Add(Token); + else if (TokenName != "") + ctx.Add(TokenName, Token); + } + TokenName = ""; + Token = ""; + break; + + case '\r': + case '\n': + break; + + case ' ': + case '\t': + if (QuoteMode) + Token += aJSON[i]; + break; + + case '\\': + ++i; + if (QuoteMode) + { + char C = aJSON[i]; + switch (C) + { + case 't': Token += '\t'; break; + case 'r': Token += '\r'; break; + case 'n': Token += '\n'; break; + case 'b': Token += '\b'; break; + case 'f': Token += '\f'; break; + case 'u': + { + string s = aJSON.Substring(i + 1, 4); + Token += (char)int.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier); + i += 4; + break; + } + default: Token += C; break; + } + } + break; + + default: + Token += aJSON[i]; + break; + } + ++i; + } + if (QuoteMode) + { + throw new Exception("JSON Parse: Quotation marks seems to be messed up."); + } + return ctx; + } + + public string SaveToBase64() + { + using (var stream = new System.IO.MemoryStream()) + { + SaveToStream(stream); + stream.Position = 0; + return System.Convert.ToBase64String(stream.ToArray()); + } + } + + public string SaveToCompressedBase64() + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public void SaveToCompressedFile(string aFileName) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public void SaveToCompressedStream(System.IO.Stream aData) + { + throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); + } + + public void SaveToStream(System.IO.Stream aData) + { + var W = new System.IO.BinaryWriter(aData); + Serialize(W); + } + + public virtual void Serialize(System.IO.BinaryWriter aWriter) + { + } + + public static string Escape(string aText) + { + + + if (aText == null) + return string.Empty; + var sb = new StringBuilder(); + foreach (char c in aText) + { + switch (c) + { + case '\\': sb.Append("\\\\"); break; + case '\"': sb.Append("\\\""); break; + case '\n': sb.Append("\\n"); break; + case '\r': sb.Append("\\r"); break; + case '\t': sb.Append("\\t"); break; + case '\b': sb.Append("\\b"); break; + case '\f': sb.Append("\\f"); break; + default: sb.Append(c); break; + } + } + return sb.ToString(); + } + +#if USE_SharpZipLib + public void SaveToCompressedStream(System.IO.Stream aData) + { + using (var gzipOut = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(aData)) + { + gzipOut.IsStreamOwner = false; + SaveToStream(gzipOut); + gzipOut.Close(); + } + } + + public void SaveToCompressedFile(string aFileName) + { + System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); + using(var F = System.IO.File.OpenWrite(aFileName)) + { + SaveToCompressedStream(F); + } + } + public string SaveToCompressedBase64() + { + using (var stream = new System.IO.MemoryStream()) + { + SaveToCompressedStream(stream); + stream.Position = 0; + return System.Convert.ToBase64String(stream.ToArray()); + } + } + +#else +#endif +#if USE_SharpZipLib + public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) + { + var zin = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(aData); + return LoadFromStream(zin); + } + public static JSONNode LoadFromCompressedFile(string aFileName) + { + using(var F = System.IO.File.OpenRead(aFileName)) + { + return LoadFromCompressedStream(F); + } + } + public static JSONNode LoadFromCompressedBase64(string aBase64) + { + var tmp = System.Convert.FromBase64String(aBase64); + var stream = new System.IO.MemoryStream(tmp); + stream.Position = 0; + return LoadFromCompressedStream(stream); + } +#else +#endif + } + public class JSONArray : JSONNode, IEnumerable + { + private List m_List = new List(); + + public override IEnumerable Childs + { + get + { + foreach (JSONNode N in m_List) + yield return N; + } + } + + public override int Count + { + get { return m_List.Count; } + } + + public override JSONNode this[int aIndex] + { + get + { + if (aIndex < 0 || aIndex >= m_List.Count) + return new JSONLazyCreator(this); + return m_List[aIndex]; + } + set + { + if (aIndex < 0 || aIndex >= m_List.Count) + m_List.Add(value); + else + m_List[aIndex] = value; + } + } + + public override JSONNode this[string aKey] + { + get { return new JSONLazyCreator(this); } + set { m_List.Add(value); } + } + + public override void Add(string aKey, JSONNode aItem) + { + m_List.Add(aItem); + } + + public IEnumerator GetEnumerator() + { + foreach (JSONNode N in m_List) + yield return N; + } + + public override JSONNode Remove(int aIndex) + { + if (aIndex < 0 || aIndex >= m_List.Count) + return null; + JSONNode tmp = m_List[aIndex]; + m_List.RemoveAt(aIndex); + return tmp; + } + + public override JSONNode Remove(JSONNode aNode) + { + m_List.Remove(aNode); + return aNode; + } + + public override void Serialize(System.IO.BinaryWriter aWriter) + { + aWriter.Write((byte)JSONBinaryTag.Array); + aWriter.Write(m_List.Count); + for (int i = 0; i < m_List.Count; i++) + { + m_List[i].Serialize(aWriter); + } + } + + public override string ToString() + { + return ToString(false); + } + public override string ToString(bool isRoot) + { + if (isRoot) + { + TabIndex = 0; + } + string result = "[ "; + TabIndex++; + result += Environment.NewLine; + for (int index = 0; index < m_List.Count; index++) + { + JSONNode N = m_List[index]; + if (index > 0) + result += ", "; + result += N.ToString(); + } + TabIndex--; + result += " ]"; + result +=Environment.NewLine; + return result; + } + + public override string ToString(string aPrefix) + { + string result = "[ "; + foreach (JSONNode N in m_List) + { + if (result.Length > 3) + result += ", "; + result += string.Format("\n{0} ", aPrefix); + result += N.ToString(string.Format("{0} ", aPrefix)); + } + result += string.Format("\n{0}]", aPrefix); + return result; + } + } + // End of JSONNode + +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs.meta new file mode 100644 index 000000000..c69069e32 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/JSON.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52f42a9448457854dbc094ab5e99f816 +timeCreated: 1428340199 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs new file mode 100644 index 000000000..24a5a7a59 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs @@ -0,0 +1,460 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace QFramework + +{ + /// + /// A ViewModel Container and a factory for Controllers and commands. + /// + + public class QFrameworkContainer : IQFrameworkContainer + { + private TypeInstanceCollection _instances; + private TypeMappingCollection _mappings; + + + public TypeMappingCollection Mappings + { + get { return _mappings ?? (_mappings = new TypeMappingCollection()); } + set { _mappings = value; } + } + + public TypeInstanceCollection Instances + { + get { return _instances ?? (_instances = new TypeInstanceCollection()); } + set { _instances = value; } + } + + public TypeRelationCollection RelationshipMappings + { + get { return _relationshipMappings; } + set { _relationshipMappings = value; } + } + + public IEnumerable ResolveAll() + { + foreach (var obj in ResolveAll(typeof(TType))) + { + yield return (TType)obj; + } + } + + /// + /// Resolves all instances of TType or subclasses of TType. Either named or not. + /// + /// The Type to resolve + /// List of objects. + public IEnumerable ResolveAll(Type type) + { + foreach (KeyValuePair, object> kv in Instances) + { + if (kv.Key.Item1 == type && !string.IsNullOrEmpty(kv.Key.Item2)) + yield return kv.Value; + } + + foreach (KeyValuePair, Type> kv in Mappings) + { + if (!string.IsNullOrEmpty(kv.Key.Item2)) + { +#if NETFX_CORE + var condition = type.GetTypeInfo().IsSubclassOf(mapping.From); +#else + var condition = type.IsAssignableFrom(kv.Key.Item1); +#endif + if (condition) + { + var item = Activator.CreateInstance(kv.Value); + Inject(item); + yield return item; + } + } + } + } + /// + /// Clears all type-mappings and instances. + /// + public void Clear() + { + Instances.Clear(); + Mappings.Clear(); + RelationshipMappings.Clear(); + } + + /// + /// Injects registered types/mappings into an object + /// + /// + public void Inject(object obj) + { + if (obj == null) return; +#if !NETFX_CORE + var members = obj.GetType().GetMembers(); +#else + var members = obj.GetType().GetTypeInfo().DeclaredMembers; +#endif + foreach (var memberInfo in members) + { + var injectAttribute = + memberInfo.GetCustomAttributes(typeof(InjectAttribute), true).FirstOrDefault() as InjectAttribute; + if (injectAttribute != null) + { + if (memberInfo is PropertyInfo) + { + var propertyInfo = memberInfo as PropertyInfo; + propertyInfo.SetValue(obj, Resolve(propertyInfo.PropertyType, injectAttribute.Name), null); + } + else if (memberInfo is FieldInfo) + { + var fieldInfo = memberInfo as FieldInfo; + fieldInfo.SetValue(obj, Resolve(fieldInfo.FieldType, injectAttribute.Name)); + } + } + } + } + + /// + /// Register a type mapping + /// + /// The base type. + /// The concrete type + public void Register(string name = null) + { + Mappings[typeof(TSource), name] = typeof(TTarget); + } + + public void Register(Type source, Type target, string name = null) + { + Mappings[source, name] = target; + } + + /// + /// Register a named instance + /// + /// The type to register the instance for. + /// The instance that will be resolved be the name + /// Perform the injection immediately + public void RegisterInstance(Type baseType, object instance = null, bool injectNow = true) + { + RegisterInstance(baseType, instance, null, injectNow); + } + + /// + /// Register a named instance + /// + /// The type to register the instance for. + /// The name for the instance to be resolved. + /// The instance that will be resolved be the name + /// Perform the injection immediately + public virtual void RegisterInstance(Type baseType, object instance = null, string name = null, bool injectNow = true) + { + Instances[baseType, name] = instance; + if (injectNow) + { + Inject(instance); + } + } + + public void RegisterInstance(TBase instance) where TBase : class + { + RegisterInstance(instance, true); + } + + public void RegisterInstance(TBase instance, bool injectNow) where TBase : class + { + RegisterInstance(instance, null, injectNow); + } + + public void RegisterInstance(TBase instance, string name, bool injectNow = true) where TBase : class + { + RegisterInstance(typeof(TBase), instance, name, injectNow); + } + + /// + /// If an instance of T exist then it will return that instance otherwise it will create a new one based off mappings. + /// + /// The type of instance to resolve + /// The/An instance of 'instanceType' + public T Resolve(string name = null, bool requireInstance = false, params object[] args) where T : class + { + return (T)Resolve(typeof(T), name, requireInstance, args); + } + + /// + /// If an instance of instanceType exist then it will return that instance otherwise it will create a new one based off mappings. + /// + /// The type of instance to resolve + /// The type of instance to resolve + /// If true will return null if an instance isn't registered. + /// The arguments to pass to the constructor if any. + /// The/An instance of 'instanceType' + public object Resolve(Type baseType, string name = null, bool requireInstance = false, params object[] constructorArgs) + { + // Look for an instance first + var item = Instances[baseType, name]; + if (item != null) + { + return item; + } + if (requireInstance) + return null; + // Check if there is a mapping of the type + var namedMapping = Mappings[baseType, name]; + if (namedMapping != null) + { + var obj = CreateInstance(namedMapping, constructorArgs); + //Inject(obj); + return obj; + } + return null; + } + + public object CreateInstance(Type type, params object[] constructorArgs) + { + if (constructorArgs != null && constructorArgs.Length > 0) + { + //return Activator.CreateInstance(type,BindingFlags.Public | BindingFlags.Instance,Type.DefaultBinder, constructorArgs,CultureInfo.CurrentCulture); + var obj2 = Activator.CreateInstance(type, constructorArgs); + Inject(obj2); + return obj2; + } +#if !NETFX_CORE + ConstructorInfo[] constructor = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance); +#else + ConstructorInfo[] constructor = type.GetTypeInfo().DeclaredConstructors.ToArray(); +#endif + + if (constructor.Length < 1) + { + var obj2 = Activator.CreateInstance(type); + Inject(obj2); + return obj2; + } + + var maxParameters = constructor.First().GetParameters(); + + foreach (var c in constructor) + { + var parameters = c.GetParameters(); + if (parameters.Length > maxParameters.Length) + { + maxParameters = parameters; + } + + } + var args = maxParameters.Select(p => + { + if (p.ParameterType.IsArray) + { + return ResolveAll(p.ParameterType); + } + return Resolve(p.ParameterType) ?? Resolve(p.ParameterType, p.Name); + }).ToArray(); + + var obj = Activator.CreateInstance(type, args); + Inject(obj); + return obj; + } + + public TBase ResolveRelation(Type tfor, params object[] args) + { + try + { + return (TBase)ResolveRelation(tfor, typeof(TBase), args); + } + catch (InvalidCastException castIssue) + { + throw new Exception(string.Format("Resolve Relation couldn't cast to {0} from {1}", typeof(TBase).Name, tfor.Name), castIssue); + } + } + public void InjectAll() + { + foreach (object instance in Instances.Values) + { + Inject(instance); + } + } + private TypeRelationCollection _relationshipMappings = new TypeRelationCollection(); + public void RegisterRelation() + { + RelationshipMappings[typeof(TFor), typeof(TBase)] = typeof(TConcrete); + } + + public void RegisterRelation(Type tfor, Type tbase, Type tconcrete) + { + RelationshipMappings[tfor, tbase] = tconcrete; + } + public object ResolveRelation(Type tfor, Type tbase, params object[] args) + { + var concreteType = RelationshipMappings[tfor, tbase]; + + if (concreteType == null) + { + return null; + } + var result = CreateInstance(concreteType, args); + //Inject(result); + return result; + } + public TBase ResolveRelation(params object[] arg) + { + return (TBase)ResolveRelation(typeof(TFor), typeof(TBase), arg); + } + } + + // http://stackoverflow.com/questions/1171812/multi-key-dictionary-in-c + public class Tuple //FUCKING Unity: struct is not supported in Mono + { + public readonly T1 Item1; + public readonly T2 Item2; + public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; } + + public override bool Equals(Object obj) + { + Tuple p = obj as Tuple; + if (obj == null) return false; + + if (Item1 == null) + { + if (p.Item1 != null) return false; + } + else + { + if (p.Item1 == null || !Item1.Equals(p.Item1)) return false; + } + if (Item2 == null) + { + if (p.Item2 != null) return false; + } + else + { + if (p.Item2 == null || !Item2.Equals(p.Item2)) return false; + } + return true; + } + + public override int GetHashCode() + { + int hash = 0; + if (Item1 != null) + hash ^= Item1.GetHashCode(); + if (Item2 != null) + hash ^= Item2.GetHashCode(); + return hash; + } + } + + // Kanglai: Using Dictionary rather than List! + public class TypeMappingCollection : Dictionary, Type> + { + public Type this[Type from, string name = null] + { + get + { + Tuple key = new Tuple(from, name); + Type mapping = null; + if (this.TryGetValue(key, out mapping)) + { + return mapping; + } + return null; + } + set + { + Tuple key = new Tuple(from, name); + this[key] = value; + } + } + } + public class TypeInstanceCollection : Dictionary, object> + { + + public object this[Type from, string name = null] + { + get + { + Tuple key = new Tuple(from, name); + object mapping = null; + if (this.TryGetValue(key, out mapping)) + { + return mapping; + } + return null; + } + set + { + Tuple key = new Tuple(from, name); + this[key] = value; + } + } + } + public class TypeRelationCollection : Dictionary, Type> + { + + public Type this[Type from, Type to] + { + get + { + Tuple key = new Tuple(from, to); + Type mapping = null; + if (this.TryGetValue(key, out mapping)) + { + return mapping; + } + return null; + } + set + { + Tuple key = new Tuple(from, to); + this[key] = value; + } + } + } + public class TypeRelation + { + public Type From + { + get; + set; + } + + public Type To { get; set; } + + public Type Concrete { get; set; } + + //public string Name { get; set; } + } + public class RegisteredInstance + { + public Type Base + { + get; + set; + } + + public object Instance + { + get; + set; + } + + public string Name { get; set; } + } + public class TypeMapping + { + public Type From + { + get; + set; + } + + public Type To + { + get; + set; + } + public string Name { get; set; } + } +} diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs.meta new file mode 100644 index 000000000..45d406b80 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/QFrameworkContainer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3d9d1f56bab2c484ab3d0e4cdcd8396e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs b/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs new file mode 100644 index 000000000..c2fe48bff --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs @@ -0,0 +1,58 @@ +using System; + +namespace QFramework +{ + public class uFrameEventMapping : Attribute + { + public string Title { get; set; } + + public uFrameEventMapping(string title) + { + Title = title; + } + } + /// + /// Used by the injection container to determine if a property or field should be injected. + /// + public class uFrameIdentifier : Attribute + { + public uFrameIdentifier(string identifier) + { + Identifier = identifier; + } + + public string Identifier { get; set; } + + public uFrameIdentifier() + { + } + } + + public class ComponentId : Attribute + { + public ComponentId(int identifier) + { + Identifier = identifier; + } + + public int Identifier { get; set; } + + public ComponentId() + { + } + } + + public class EventId : Attribute + { + public EventId(int identifier) + { + Identifier = identifier; + } + + public int Identifier { get; set; } + + public EventId() + { + } + } +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs.meta b/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs.meta new file mode 100644 index 000000000..0ef224a73 --- /dev/null +++ b/Assets/QFramework/Framework/0.Core/Plugins/IOC/uFrameIdentifier.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4b49ddf93008b734ca2addfed0fb232b +timeCreated: 1442388813 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/1.ResKit/PackageVersion.json b/Assets/QFramework/Framework/1.ResKit/PackageVersion.json index 2c3642653..0615e42b0 100644 --- a/Assets/QFramework/Framework/1.ResKit/PackageVersion.json +++ b/Assets/QFramework/Framework/1.ResKit/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.26", + "Version": "v0.1.0", "Type": 0, "AccessRight": 0, - "DownloadUrl": "http://liangxiegame.com/media/2.ResKit_v0.0.1.unitypackage", - "InstallPath": "Assets/QFramework/Framework/2.ResKit/", + "DownloadUrl": null, + "InstallPath": "Assets/QFramework/Framework/1.ResKit/", "Readme": { - "version": "v0.0.26", - "content": "test LoadLocalImage Async", + "version": "v0.1.0", + "content": "adjust folder", "author": "liangxie", - "date": "2019 年 01 月 13 日 18:15" + "date": "2019 年 01 月 24 日 11:51" }, - "Name": "2.ResKit", - "VersionNumber": 26, - "FileName": "2.ResKit_v0.0.26.unitypackage" + "Name": "1.ResKit", + "VersionNumber": 100, + "FileName": "1.ResKit_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/1.ResKit/PackageVersion.json.meta b/Assets/QFramework/Framework/1.ResKit/PackageVersion.json.meta index b87c136f6..5bc34e1f5 100644 --- a/Assets/QFramework/Framework/1.ResKit/PackageVersion.json.meta +++ b/Assets/QFramework/Framework/1.ResKit/PackageVersion.json.meta @@ -1,5 +1,7 @@ fileFormatVersion: 2 guid: cf46e72a7051d4917835f461ecdc0a8e +timeCreated: 1548301862 +licenseType: Free TextScriptImporter: externalObjects: {} userData: diff --git a/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs b/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs new file mode 100644 index 000000000..6e5eb158d --- /dev/null +++ b/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs @@ -0,0 +1,105 @@ +/**************************************************************************** + * Copyright (c) 2017 ~ 2018.5 liangxie + * + * http://qframework.io + * https://github.com/liangxiegame/QFramework + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ****************************************************************************/ + +namespace QFramework +{ + using UnityEngine.Events; + + /// + /// + /// 全局唯一继承于MonoBehaviour的单例类,保证其他公共模块都以App的生命周期为准 + /// 这个东西很基类,没什么用。概念也不太清晰 + /// + [QMonoSingletonPath("[Framework]/QFramework")] + public class Framework : QMgrBehaviour, ISingleton + { + /// + /// 组合的方式实现单例的模板 + /// + /// The instance. + public static Framework Instance + { + get { return MonoSingletonProperty.Instance; } + } + + public override int ManagerId + { + get { return QMgrID.Framework; } + } + + public void OnSingletonInit() + { + } + + public void Dispose() + { + } + + private Framework() + { + } + + #region 全局生命周期回调 + + public UnityAction OnUpdateEvent = delegate { }; + public UnityAction OnFixedUpdateEvent = delegate { }; + public UnityAction OnLateUpdateEvent = delegate { }; + public UnityAction OnGUIEvent = delegate { }; + public UnityAction OnDestroyEvent = delegate { }; + public UnityAction OnApplicationQuitEvent = delegate { }; + + private void Update() + { + OnUpdateEvent.InvokeGracefully(); + } + + private void FixedUpdate() + { + OnFixedUpdateEvent.InvokeGracefully(); + } + + private void LateUpdate() + { + OnLateUpdateEvent.InvokeGracefully(); + } + + private void OnGUI() + { + OnGUIEvent.InvokeGracefully(); + } + + protected override void OnDestroy() + { + OnDestroyEvent.InvokeGracefully(); + } + + private void OnApplicationQuit() + { + OnApplicationQuitEvent.InvokeGracefully(); + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs.meta b/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs.meta new file mode 100644 index 000000000..b5cf4e133 --- /dev/null +++ b/Assets/QFramework/Framework/2.UIKit/2.ManagerOfManagers/Framework.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 930ede85623034d9589396b113cfd073 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/QFramework/Framework/2.UIKit/PackageVersion.json b/Assets/QFramework/Framework/2.UIKit/PackageVersion.json index cfd12459d..fb0168b36 100644 --- a/Assets/QFramework/Framework/2.UIKit/PackageVersion.json +++ b/Assets/QFramework/Framework/2.UIKit/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.22", + "Version": "v0.1.0", "Type": 0, "AccessRight": 0, "DownloadUrl": null, - "InstallPath": "Assets/QFramework/Framework/3.UIKit/", + "InstallPath": "Assets/QFramework/Framework/2.UIKit/", "Readme": { - "version": "v0.0.22", - "content": "add OnOpen ", + "version": "v0.1.0", + "content": "move folder", "author": "liangxie", - "date": "2019 年 01 月 13 日 21:13" + "date": "2019 年 01 月 24 日 11:51" }, - "Name": "3.UIKit", - "VersionNumber": 22, - "FileName": "3.UIKit_v0.0.22.unitypackage" + "Name": "2.UIKit", + "VersionNumber": 100, + "FileName": "2.UIKit_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/2.UIKit/PackageVersion.json.meta b/Assets/QFramework/Framework/2.UIKit/PackageVersion.json.meta index 663f91d61..7c797d8a2 100644 --- a/Assets/QFramework/Framework/2.UIKit/PackageVersion.json.meta +++ b/Assets/QFramework/Framework/2.UIKit/PackageVersion.json.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 guid: 99f3aadfc35994501b82f70e30f212af -timeCreated: 1535125682 -licenseType: Pro +timeCreated: 1548301906 +licenseType: Free TextScriptImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/QFramework/Framework/3.EditorToolKit/Document.md b/Assets/QFramework/Framework/3.EditorToolKit/Document.md index 3577dcb99..6d72ba4b2 100644 --- a/Assets/QFramework/Framework/3.EditorToolKit/Document.md +++ b/Assets/QFramework/Framework/3.EditorToolKit/Document.md @@ -1,80 +1,3 @@ ### Editor 模块简介: -这里是对Unity编辑器的扩展,也包含了对Unity组件Inspector的拓展 - -# **工具** - -## 1. **Transform检视面板** - -![]() - -**按键功能** - -1. P/R/S:设置默认,注:P/R 为000,S为111 -2. Round./.0/.00:按小数点位数四舍五入 -3. Copy/ Paste:复制/粘贴Transform的数据(非引用Transform) - -注:区分Local和Global数据 - -1. PPos/PRot/PSca:单独粘贴Pos, 单独粘贴Rot, 单独粘贴Sca - -**Transform和RectTransform共有的:** - -![]() - -1. Name:根据第一个非Transform的组件自动命名 -2. Auto Ref:按照变量名自动引用序列化变量 -3. CalledByEditor():此物体的所有组件调用这个函数(实现编辑器下做批量操作) -4. C:复制CalledByEditor() { }的代码到剪贴板 - -1. 1. **RectTransform检视面板** - -![]() - -**快捷键:(鼠标指向Help弹出文字提示)** - -1. CTRL+箭头:偏移1 -2. CTRL Shift+箭头:偏移10 - -**编辑器界面按钮:** - -1. P/D/R/S:设置默认,注:P/R 为000,S为111 -2. C/P:复制粘贴数据 -3. Round:位数四舍五入成整数 -4. F:快速设为下图 - -![]() - -1. N:快速设为下图 - -![]() - -1. Pivot:快速设锚点 - -![]() - -**Transform和RectTransform共有的:** - -![]() - -1. Name:根据第一个非Transform的组件自动命名 -2. Auto Ref:按照变量名自动引用序列化变量 -3. CalledByEditor():此物体的所有组件调用这个函数(实现编辑器下做批量操作) -4. C:复制CalledByEditor() { }的代码到剪贴板 - -### 1. 1. **Hierarchy面板*****(注:这个邮件菜单可能有其他成员的功能未列入)*** - -快捷键: - -1. CTRL+d:复制一个物体,保持原命名 -2. CTRL+s:排序子物体 -3. CTRL+g:选中的物体打组 - -右键菜单: - -![]() - -1. Create Empty – Top:添加子物体,移动到第一位 -2. Get Var Code Auto:将选中物体按类型生成代码复制到粘贴板 -3. UI->img:新建一个Image,命名为img,不勾选Raycast -4. UI->txt:新建一个Text,命名为txt,不勾选Raycast +这里是对Unity编辑器的扩展,也包含了对Unity组件Inspector的拓展 \ No newline at end of file diff --git a/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json b/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json index a56ed6488..482bac2ea 100644 --- a/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json +++ b/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.9", + "Version": "v0.1.0", "Type": 0, "AccessRight": 0, - "DownloadUrl": "http://liangxiegame.com/media/4.EditorToolKit_v0.0.3.unitypackage", - "InstallPath": "Assets/QFramework/Framework/4.EditorToolKit/", + "DownloadUrl": null, + "InstallPath": "Assets/QFramework/Framework/3.EditorToolKit/", "Readme": { - "version": "v0.0.9", - "content": "fix event bug", - "author": "LIANGXIE", - "date": "2018-12-29" + "version": "v0.1.0", + "content": "move folder", + "author": "liangxie", + "date": "2019 年 01 月 24 日 11:52" }, - "Name": "4.EditorToolKit", - "VersionNumber": 9, - "FileName": "4.EditorToolKit_v0.0.9.unitypackage" + "Name": "3.EditorToolKit", + "VersionNumber": 100, + "FileName": "3.EditorToolKit_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json.meta b/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json.meta index 7b1f6376c..88c01608f 100644 --- a/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json.meta +++ b/Assets/QFramework/Framework/3.EditorToolKit/PackageVersion.json.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 guid: 1b45d087f34904880bce8ac44ead3043 -timeCreated: 1535160972 -licenseType: Pro +timeCreated: 1548301932 +licenseType: Free TextScriptImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json b/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json index c25d77613..26c65dce6 100644 --- a/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json +++ b/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.8", + "Version": "v0.1.0", "Type": 0, "AccessRight": 0, "DownloadUrl": null, - "InstallPath": "Assets/QFramework/Framework/5.ScriptCollection/", + "InstallPath": "Assets/QFramework/Framework/4.ScriptCollection/", "Readme": { - "version": "v0.0.8", - "content": "add don't destroy on load script", - "author": "凉鞋的MacBook Pro (2)", - "date": "2018-12-11" + "version": "v0.1.0", + "content": "move folder", + "author": "liangxie", + "date": "2019 年 01 月 24 日 11:52" }, - "Name": "5.ScriptCollection", - "VersionNumber": 8, - "FileName": "5.ScriptCollection_v0.0.8.unitypackage" + "Name": "4.ScriptCollection", + "VersionNumber": 100, + "FileName": "4.ScriptCollection_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json.meta b/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json.meta index 39cb5e4bb..cfe04167c 100644 --- a/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json.meta +++ b/Assets/QFramework/Framework/4.ScriptCollection/PackageVersion.json.meta @@ -1,8 +1,9 @@ fileFormatVersion: 2 guid: 9558cf7a8b47b44acbac8b83ba70b6c4 -timeCreated: 1535160888 -licenseType: Pro +timeCreated: 1548301961 +licenseType: Free TextScriptImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json b/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json index eb0fabfc9..e8007d17d 100644 --- a/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json +++ b/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json @@ -1,15 +1,16 @@ { - "Version": "v0.0.9", + "Version": "v0.1.0", "Type": 0, + "AccessRight": 0, "DownloadUrl": null, - "InstallPath": "Assets/QFramework/Framework/8.ShaderLib/", + "InstallPath": "Assets/QFramework/Framework/5.ShaderLib/", "Readme": { - "version": "v0.0.9", - "content": "add PostFXBehaviour", - "author": "凉鞋的MacBook Pro (2)", - "date": "2018-10-02" + "version": "v0.1.0", + "content": "remove folder", + "author": "liangxie", + "date": "2019 年 01 月 24 日 11:53" }, - "Name": "8.ShaderLib", - "VersionNumber": 9, - "FileName": "8.ShaderLib_v0.0.9.unitypackage" + "Name": "5.ShaderLib", + "VersionNumber": 100, + "FileName": "5.ShaderLib_v0.1.0.unitypackage" } \ No newline at end of file diff --git a/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json.meta b/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json.meta index 1d9555e34..6fc99fb0c 100644 --- a/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json.meta +++ b/Assets/QFramework/Framework/5.ShaderLib/PackageVersion.json.meta @@ -1,5 +1,7 @@ fileFormatVersion: 2 guid: eeee23c312a9c447a9724fb55d0e682c +timeCreated: 1548301989 +licenseType: Free TextScriptImporter: externalObjects: {} userData: diff --git a/Assets/QFramework/Framework/PackageVersion.json b/Assets/QFramework/Framework/PackageVersion.json index d4270ed83..9025ce24d 100644 --- a/Assets/QFramework/Framework/PackageVersion.json +++ b/Assets/QFramework/Framework/PackageVersion.json @@ -1,16 +1,16 @@ { - "Version": "v0.0.14", + "Version": "v0.0.15", "Type": 0, "AccessRight": 0, "DownloadUrl": null, "InstallPath": "Assets/QFramework/Framework", "Readme": { - "version": "v0.0.14", - "content": "suprot 5.6", + "version": "v0.0.15", + "content": "add uFrame 的 IOC 解决方案,详情查看 Example。", "author": "liangxie", - "date": "2019 年 01 月 25 日 12:40" + "date": "2019 年 01 月 26 日 18:32" }, "Name": "Framework", - "VersionNumber": 14, - "FileName": "Framework_v0.0.14.unitypackage" + "VersionNumber": 15, + "FileName": "Framework_v0.0.15.unitypackage" } \ No newline at end of file