public override string[] GetAuxPropertyNames(IHostInvokeContext context, BindingFlags bindFlags) { var type = GetSpecificTypeNoThrow(); if (type != null) { return(type.GetScriptableNestedTypes(bindFlags, context.DefaultAccess).Select(testType => testType.GetRootName()).Distinct().ToArray()); } return(MiscHelpers.GetEmptyArray <string>()); }
public override string[] GetAuxPropertyNames(BindingFlags bindFlags) { var type = GetSpecificTypeNoThrow(); if (type != null) { return(type.GetNestedTypes(bindFlags).Select(testType => testType.GetRootName()).Distinct().ToArray()); } return(MiscHelpers.GetEmptyArray <string>()); }
public static bool AdvanceEnumerator(object enumerator, out object value) { var wrapper = (IScriptMarshalWrapper)enumerator; if (((IEnumerator)wrapper.Unwrap()).MoveNext()) { value = ((IDynamic)enumerator).GetProperty("Current", MiscHelpers.GetEmptyArray <object>()); return(true); } value = null; return(false); }
private void AssertMemberInternal(string objectName, string memberName, string scriptMemberName) { var field = GetType().GetField(objectName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); Assert.IsNotNull(field); var member = field.FieldType.GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FirstOrDefault(testMember => testMember.GetShortName() == memberName); Assert.IsNotNull(member); var target = field.GetValue(this); Assert.IsNotNull(target); var eventInfo = member as EventInfo; if (eventInfo != null) { var eventSource = engine.Evaluate(objectName + "." + scriptMemberName) as EventSource <EventHandler>; Assert.IsNotNull(eventSource); // ReSharper disable once PossibleNullReferenceException Assert.AreSame(target, eventSource.Source); Assert.AreSame(eventInfo, eventSource.EventInfo); return; } field = member as FieldInfo; if (field != null) { Assert.AreEqual(field.GetValue(target), engine.Evaluate(objectName + "." + scriptMemberName)); return; } var property = member as PropertyInfo; if (property != null) { Assert.AreEqual(property.GetValue(target, MiscHelpers.GetEmptyArray <object>()), engine.Evaluate(objectName + "." + scriptMemberName)); return; } var method = member as MethodInfo; if (method != null) { Assert.AreEqual(method.Invoke(target, new object[] { 98765 }), engine.Evaluate(objectName + "." + scriptMemberName + "(98765)")); return; } Assert.Fail("Unrecognized member"); }
public override object GetProperty(int index) { VerifyNotDisposed(); return(GetProperty(index.ToString(CultureInfo.InvariantCulture), MiscHelpers.GetEmptyArray <object>())); }
public virtual string[] GetAuxPropertyNames(IHostInvokeContext context, BindingFlags bindFlags) { return(MiscHelpers.GetEmptyArray <string>()); }
public override object GetProperty(string name) { VerifyNotDisposed(); var result = engine.MarshalToHost(engine.ScriptInvoke(() => { try { return(target.InvokeMember(name, BindingFlags.GetProperty, null, target, MiscHelpers.GetEmptyArray <object>(), null, CultureInfo.InvariantCulture, null)); } catch (Exception) { if (target.GetMethod(name, BindingFlags.GetProperty) != null) { // Property retrieval failed, but a method with the given name exists; // create a tear-off method. This currently applies only to VBScript. return(new ScriptMethod(this, name)); } return(Nonexistent.Value); } }), false); var resultScriptItem = result as WindowsScriptItem; if ((resultScriptItem != null) && (resultScriptItem.engine == engine)) { resultScriptItem.holder = this; } return(result); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { return(TryWrappedBindAndInvoke(binder, MiscHelpers.GetEmptyArray <object>(), out result)); }
public MethodInfo[] GetMethods(BindingFlags bindFlags) { return(MiscHelpers.GetEmptyArray <MethodInfo>()); }
public virtual string[] GetAuxPropertyNames(BindingFlags bindFlags) { return(MiscHelpers.GetEmptyArray <string>()); }
public static object GetEnumeratorForHostObject(object obj) { return(((IDynamic)obj).InvokeMethod(SpecialMemberNames.NewEnum, MiscHelpers.GetEmptyArray <object>())); }
public static object GetHostObjectProperty(object obj, string name, out bool isCacheable) { return(((IDynamic)obj).GetProperty(name, MiscHelpers.GetEmptyArray <object>(), out isCacheable)); }
public static object InvokeVBTestFunction(string code, string extraDefinitions = null) { var options = new CompilerParameters { GenerateInMemory = true }; options.ReferencedAssemblies.Add("ClearScript.dll"); options.ReferencedAssemblies.Add("ClearScriptTest.dll"); options.ReferencedAssemblies.Add(typeof(Enumerable).Assembly.Location); options.ReferencedAssemblies.Add(typeof(Assert).Assembly.Location); var results = new VBCodeProvider().CompileAssemblyFromSource(options, MiscHelpers.FormatInvariant(@" Imports System Imports System.Linq Imports System.Runtime.InteropServices Imports Microsoft.ClearScript Imports Microsoft.ClearScript.Test Imports Microsoft.ClearScript.V8 Imports Microsoft.ClearScript.Windows Imports Microsoft.VisualStudio.TestTools.UnitTesting {1} Module TestModule Function TestFunction {0} End Function End Module ", code, extraDefinitions ?? string.Empty)); if (results.Errors.HasErrors) { var messageBuilder = new StringBuilder("Errors encountered during Visual Basic compilation:\n"); foreach (var error in results.Errors) { messageBuilder.Append(error); messageBuilder.Append('\n'); } throw new OperationCanceledException(messageBuilder.ToString()); } return(results.CompiledAssembly.GetType("TestModule").InvokeMember("TestFunction", BindingFlags.InvokeMethod, null, null, MiscHelpers.GetEmptyArray <object>())); }
public void BugFix_VBCallToParameterlessVBScriptSub() { var options = new CompilerParameters { GenerateInMemory = true }; options.ReferencedAssemblies.Add("ClearScript.dll"); var results = new VBCodeProvider().CompileAssemblyFromSource(options, new[] { @" Module TestModule Sub TestMethod Using engine As New Microsoft.ClearScript.Windows.VBScriptEngine engine.Execute(""sub main : end sub"") engine.Script.main() End Using End Sub End Module " }); results.CompiledAssembly.GetType("TestModule").InvokeMember("TestMethod", BindingFlags.InvokeMethod, null, null, MiscHelpers.GetEmptyArray <object>()); }
public PropertyInfo[] GetProperties(BindingFlags bindFlags) { return(MiscHelpers.GetEmptyArray <PropertyInfo>()); }
public ExtensionMethodSummary() { Types = MiscHelpers.GetEmptyArray <Type>(); Methods = MiscHelpers.GetEmptyArray <MethodInfo>(); MethodNames = MiscHelpers.GetEmptyArray <string>(); }
public override ParameterInfo[] GetIndexParameters() { return(MiscHelpers.GetEmptyArray <ParameterInfo>()); }
private static HostObject GetNullWrapper(Type type) { return((HostObject)getNullWrapperGenericMethod.MakeGenericMethod(type).Invoke(null, MiscHelpers.GetEmptyArray <object>())); }
public override object[] GetCustomAttributes(Type attributeType, bool inherit) { return(MiscHelpers.GetEmptyArray <object>()); }