本文整理汇总了C#中FunctionObject类的典型用法代码示例。如果您正苦于以下问题:C# FunctionObject类的具体用法?C# FunctionObject怎么用?C# FunctionObject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
FunctionObject类属于命名空间,在下文中一共展示了FunctionObject类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Dir
internal static void Dir(FunctionObject func, CommonObject that, object value)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Yellow;
ObjectDumper.Write(value, 15);
Console.ResetColor();
}
示例2: ScriptRunner
public ScriptRunner()
{
_context = new CSharp.Context();
var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources/calculate.js");
_context.ExecuteFile(file);
_calculate = _context.Globals.GetT<FunctionObject>("calculate");
}
示例3: AppendJson
/// <summary>
/// Opens a file, appends the specified string to the file, and then closes the file. If the file does not exist, this method creates a file, writes the specified string to the file, then closes the file.
/// </summary>
internal static void AppendJson(FunctionObject ctx, ScriptObject instance, BoxedValue path, BoxedValue contents, BoxedValue onComplete, BoxedValue encodingName)
{
if (!path.IsString)
throw new ArgumentException("[appendJson] First parameter should be defined and be a string.");
if (!contents.IsStrictlyObject)
throw new ArgumentException("[appendJson] Second parameter should be defined and be an object.");
if (!onComplete.IsUndefined && !onComplete.IsFunction)
throw new ArgumentException("[appendJson] Third parameter should be an onComplete function.");
// Get the curent channel
var channel = Channel.Current;
// Dispatch the task
channel.Async(() =>
{
// The encoding to use
Encoding encoding = encodingName.IsString
? TextEncoding.GetEncoding(encodingName.String)
: null;
// Defaults to UTF8
if (encoding == null)
encoding = TextEncoding.UTF8;
// Unbox the array of lines and execute the append
File.AppendAllText(
path.Unbox<string>(),
Native.Serialize(instance.Env, contents, false).Unbox<string>(),
encoding
);
// Dispatch the on complete asynchronously
channel.DispatchCallback(onComplete, instance);
});
}
示例4: AddHandler
static void AddHandler(
FunctionObject func, CommonObject that,
string eventName, FunctionObject handler)
{
EventObject self = that.CastTo<EventObject>();
self.AddHandler(eventName, handler);
}
示例5: GetConnectedFor
/// <summary>
/// Gets the session time.
/// </summary>
/// <param name="ctx">The function context.</param>
/// <param name="instance">The console object instance.</param>
/// <param name="eventName">The name of the event.</param>
internal static BoxedValue GetConnectedFor(FunctionObject ctx, ScriptObject instance)
{
// Get the first client
var client = Channel.Current.First;
if (client == null)
return Undefined.Boxed;
// Return the address
return BoxedValue.Box(
client.Channel.ConnectedFor
);
}
示例6: Log
internal static void Log(FunctionObject func, CommonObject that, object value)
{
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Yellow;
if(value is string)
Console.WriteLine(value);
else if (value is BoxedValue)
{
BoxedValue boxedValue = ((BoxedValue)value);
Console.WriteLine(TypeConverter.ToString(boxedValue));
}
Console.ResetColor();
}
示例7: ScriptEngineContext
public ScriptEngineContext(IResourceManager resourceManager)
{
var envJs = resourceManager.GetStringFromAssemblyOf<ScriptEngine>("Forseti.Scripting.Scripts.env.js");
_context = Context.enter();
_context.setOptimizationLevel(-1);
_scope = _context.initStandardObjects();
Class myJClass = typeof(SystemConsole);
Member method = myJClass.getMethod("Print", typeof(string));
Scriptable function = new FunctionObject("print", method, _scope);
_scope.put("print", _scope, function);
SystemConsole.LoggingEnabled = false;
_context.evaluateString(_scope, envJs, "env.js", 1, null);
SystemConsole.LoggingEnabled = true;
}
示例8: AddGlobalMethodsFromStaticMethodsInType
void AddGlobalMethodsFromStaticMethodsInType(System.Type type, params string[] methodNames)
{
MethodInfo[] methods;
var query = type.GetMethods(BindingFlags.Public | BindingFlags.Static).Select(m => m);
if( methodNames.Length > 0 )
query = query.Where(m => methodNames.Contains(m.Name));
methods = query.ToArray();
Class javaClass = type;
foreach (var method in methods)
{
Member methodMember = javaClass.getMethod(method.Name, GetParametersForMethod(method));
var functionName = method.Name.ToCamelCase();
Scriptable methodFunction = new FunctionObject(functionName, methodMember, _scope);
_scope.put(functionName, _scope, methodFunction);
}
}
示例9: CreateDelegate
public Delegate CreateDelegate(object instance, EventInfo event_info, FunctionObject f, object script_delegate)
{
Type eventHandlerType = event_info.EventHandlerType;
string name = event_info.Name;
for (int i = 0; i < this.registered_event_handlers.Count; i++)
{
EventRec rec = this.registered_event_handlers[i] as EventRec;
Delegate hostDelegate = rec.HostDelegate;
if ((eventHandlerType == rec.EventHandlerType) && (name == rec.EventName))
{
EventRec rec2 = new EventRec();
rec2.Sender = instance;
rec2.EventHandlerType = eventHandlerType;
rec2.ScriptDelegate = script_delegate;
rec2.HostDelegate = hostDelegate;
rec2.EventName = name;
this.event_rec_list.Add(rec2);
return hostDelegate;
}
}
return null;
}
示例10: Use
public static void Use(FunctionObject _, CommonObject that, CommonObject obj)
{
var configObj = that.CastTo<ConfigJsObject>();
configObj.configBase.Use(typeof(JavaScriptApp), obj);
}
示例11: Map
public static void Map(FunctionObject _, CommonObject that, string str, BoxedValue func)
{
var configObj = that.CastTo<ConfigJsObject>();
configObj.configBase.Map(str, BuilderJsObject.MapBuilder(func.Func));
}
示例12: GroupCollapsed
/// <summary>
/// Creates a new inline group, indenting all following output by another level; unlike group(),
/// this starts with the inline group collapsed, requiring the use of a disclosure button to
/// expand it. To move back out a level, call groupEnd()
/// </summary>
/// <param name="ctx">The function context.</param>
/// <param name="instance">The console object instance.</param>
/// <param name="eventName">The name of the event.</param>
/// <param name="eventValue">The value of the event.</param>
internal static void GroupCollapsed(FunctionObject ctx, ScriptObject instance, BoxedValue eventValue)
{
ConsoleObject.SendEvent("groupCollapsed", eventValue);
}
示例13: Run
public static void Run(FunctionObject _, CommonObject that, BoxedValue obj)
{
var configObj = that.CastTo<ConfigJsObject>();
configObj.configBase.Run(new JavaScriptApp(obj.Object));
}
示例14: Dir
/// <summary>
/// Displays an interactive listing of the properties of a specified JavaScript object. This
/// listing lets you use disclosure triangles to examine the contents of child objects.
/// </summary>
/// <param name="ctx">The function context.</param>
/// <param name="instance">The console object instance.</param>
/// <param name="eventName">The name of the event.</param>
/// <param name="eventValue">The value of the event.</param>
internal static void Dir(FunctionObject ctx, ScriptObject instance, BoxedValue eventValue)
{
ConsoleObject.SendEvent("dir", eventValue);
}
示例15: FindApplicableConstructorList
private void FindApplicableConstructorList(IntegerList a, IntegerList param_mod, ref FunctionObject best, ref IntegerList applicable_list)
{
for (int i = 0; i < base.Members.Count; i++) {
MemberObject obj2 = base.Members[i];
if ((obj2.Kind == MemberKind.Constructor) && !obj2.HasModifier(Modifier.Static)) {
FunctionObject f = (FunctionObject)obj2;
this.AddApplicableMethod(f, a, param_mod, 0, ref best, ref applicable_list);
}
}
ClassObject ancestorClass = this.AncestorClass;
if (!base.Imported) {
if ((ancestorClass != null) && (best == null)) {
ancestorClass.FindApplicableConstructorList(a, param_mod, ref best, ref applicable_list);
}
}
else {
IntegerList list = new IntegerList(false);
foreach (ConstructorInfo info in this.ImportedType.GetConstructors()) {
list.Add(base.Scripter.symbol_table.RegisterConstructor(info, base.Id));
}
if (base.Scripter.SearchProtected) {
foreach (ConstructorInfo info2 in this.ImportedType.GetConstructors(base.Scripter.protected_binding_flags)) {
list.Add(base.Scripter.symbol_table.RegisterConstructor(info2, base.Id));
}
}
for (int j = 0; j < list.Count; j++) {
FunctionObject functionObject = base.Scripter.GetFunctionObject(list[j]);
this.AddApplicableMethod(functionObject, a, param_mod, 0, ref best, ref applicable_list);
}
if ((ancestorClass != null) && (best == null)) {
ancestorClass.FindApplicableConstructorList(a, param_mod, ref best, ref applicable_list);
}
}
}