[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/r2d2m/ClearScript/master/ClearScript/DynamicHostObject.cs [Back]  [Original]

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

using System;
using System.Dynamic;
using System.Linq;

namespace Microsoft.ClearScript
{
    /// 
    /// Extends  for enhanced behavior and performance in a scripting environment.
    /// 
    public abstract class DynamicHostObject : DynamicObject
    {
        // ReSharper disable EmptyConstructor

        /// 
        /// Initializes a new  instance.
        /// 
        protected DynamicHostObject()
        {
            // the help file builder (SHFB) insists on an empty constructor here
        }

        // ReSharper restore EmptyConstructor

        /// 
        /// Determines whether the object has the specified named member.
        /// 
        /// The member name for which to search.
        /// True to perform a case-insensitive search, false otherwise.
        /// True if the named member was found, false otherwise.
        public virtual bool HasMember(string name, bool ignoreCase)
        {
            var comparer = ignoreCase ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal;
            return GetDynamicMemberNames().Contains(name, comparer);
        }

        internal static bool HasMember(IDynamicMetaObjectProvider metaObjectProvider, DynamicMetaObject metaObject, string name, bool ignoreCase)
        {
            if (metaObjectProvider is DynamicHostObject hostObject)
            {
                return hostObject.HasMember(name, ignoreCase);
            }

            var comparer = ignoreCase ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal;
            return metaObject.GetDynamicMemberNames().Contains(name, comparer);
        }
    }
}

Web Proxy Viewer  |  New URL  |  Original Page