forked from ClearFoundry/ClearScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHostItem.NetFramework.cs
More file actions
49 lines (38 loc) · 1.48 KB
/
HostItem.NetFramework.cs
File metadata and controls
49 lines (38 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System;
using System.Collections;
using System.Collections.Generic;
using Microsoft.ClearScript.Util;
namespace Microsoft.ClearScript
{
internal partial class HostItem
{
#region initialization
private static HostItem Create(ScriptEngine engine, HostTarget target, HostItemFlags flags)
{
return TargetSupportsExpandoMembers(target, flags) ? new ExpandoHostItem(engine, target, flags) : new HostItem(engine, target, flags);
}
#endregion
#region internal members
#region member invocation
private object CreateAsyncEnumerator<T>(IEnumerable<T> enumerable)
{
return HostObject.Wrap(enumerable.GetEnumerator().ToAsyncEnumerator(Engine), typeof(IAsyncEnumeratorPromise<T>));
}
private object CreateAsyncEnumerator()
{
if (BindSpecialTarget(out IEnumerable _))
{
var enumerableHelpersHostItem = Wrap(Engine, EnumerableHelpers.HostType, HostItemFlags.PrivateAccess);
if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)enumerableHelpersHostItem).InvokeMethod("GetAsyncEnumerator", this, Engine)))
{
return enumerator;
}
}
throw new NotSupportedException("The object is not async-enumerable");
}
#endregion
#endregion
}
}