diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-25 16:58:42 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-25 16:58:42 +0200 |
| commit | d530d39d7ed9b05e3e233adc62dceba2fd17e1fe (patch) | |
| tree | 2e042288fdeedd12e3ca0ee331743ebc115eb4b2 /Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense | |
| parent | adaddad79352c156303e9178a6f172a18af50cd2 (diff) | |
| download | Tango-d530d39d7ed9b05e3e233adc62dceba2fd17e1fe.tar.gz Tango-d530d39d7ed9b05e3e233adc62dceba2fd17e1fe.zip | |
Improved extension methods support on procedures.
Drastically reduces procedure designer loading time.
DataStore proto support fully working and tested.
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/KnownType.cs | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/KnownType.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/KnownType.cs index f55838db3..8010dc689 100644 --- a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/KnownType.cs +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense/KnownType.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections; using System.Collections.Generic; using System.Drawing; @@ -43,6 +44,13 @@ namespace Tango.Scripting.Editors.Intellisense } public List<KnownTypeField> Fields { get; set; } + public static List<Assembly> ExtensionMethodsAssemblies { get; set; } + + static KnownType() + { + ExtensionMethodsAssemblies = new List<Assembly>(); + } + public KnownType(Type type) { Summary = "Loading documentation..."; @@ -131,11 +139,24 @@ namespace Tango.Scripting.Editors.Intellisense methods.AddRange(inter.GetRuntimeMethods().Where(x => x.IsPublic && !x.IsSpecialName).ToList()); } methods = methods.Distinct().ToList(); + + if (!methods.Exists(x => x.Name == "ToString")) + { + methods.Add(typeof(Object).GetMethod("ToString")); + } } //TODO: Separate extension methods! methods.AddRange(Type.GetExtensionMethods(Type.Assembly).ToList()); + if (Type.Namespace.StartsWith("Tango")) + { + foreach (var asm in ExtensionMethodsAssemblies.Where(x => x != Type.Assembly)) + { + methods.AddRange(Type.GetExtensionMethods(asm).ToList()); + } + } + if (typeof(IEnumerable).IsAssignableFrom(Type)) { var linqMethods = typeof(System.Linq.Enumerable).GetMethods(BindingFlags.Static | BindingFlags.Public).ToList(); @@ -152,7 +173,7 @@ namespace Tango.Scripting.Editors.Intellisense m.Name = method.Name; m.ReturnType = method.ReturnType; m.ReturnTypeFriendlyName = method.ReturnType.GetFriendlyName(); - m.IsStatic = method.IsStatic; + m.IsStatic = method.IsStatic && !method.IsDefined(typeof(System.Runtime.CompilerServices.ExtensionAttribute), false); if (method.IsGenericMethod) { |
