aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-25 16:58:42 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-25 16:58:42 +0200
commitd530d39d7ed9b05e3e233adc62dceba2fd17e1fe (patch)
tree2e042288fdeedd12e3ca0ee331743ebc115eb4b2 /Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Intellisense
parentadaddad79352c156303e9178a6f172a18af50cd2 (diff)
downloadTango-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.cs25
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)
{