// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; using System.Reflection; using Microsoft.ClearScript.Util; namespace Microsoft.ClearScript { internal abstract class HostTarget { public abstract Type Type { get; } public abstract object Target { get; } public abstract object InvokeTarget { get; } public abstract object DynamicInvokeTarget { get; } public abstract HostTargetFlags GetFlags(IHostContext context); public virtual string[] GetAuxMethodNames(IHostContext context, BindingFlags bindFlags) { return ArrayHelpers.GetEmptyArray(); } public virtual string[] GetAuxPropertyNames(IHostContext context, BindingFlags bindFlags) { return ArrayHelpers.GetEmptyArray(); } public virtual bool TryInvokeAuxMember(IHostContext context, string name, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { result = null; return false; } public virtual bool TryInvoke(IHostContext context, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { result = null; return false; } public abstract Invocability GetInvocability(IHostContext context, BindingFlags bindFlags, bool ignoreDynamic); } }