我需要从脚本映射中的脚本函数中调用外部组件中的方法,尤其是枚举类型是C#汇编中的参数。这甚至可能吗?我已经通过字符串或整数传递,同时多次调用外部组件,没有问题。

有帮助吗?

解决方案

不幸的是,您不能在旨在从脚本函数词中调用的方法中使用枚举类型。但是,您几乎可以通过围绕外部方法创建包装器来实现所需的目标。

例如,以下方法无法直接从脚本函数源中调用。

using System;

namespace ExternalAssembly
{
    public enum Options
    {
        OptionNumberOne,
        OptionNumberTwo,
    }

    public class Helper
    {
        public string DoSomething(Options option)
        {
            // really do something useful here
            return String.Empty;
        }
    }
}

尝试使用此方法将导致以下错误:

函数'scriptns0:dosomething()'失败了。值要么太大或太小,对于INT32。

但是,如果您编写以下包装法,则如果有效:

    public string DoSomething(string option)
    {
        return Helper.DoSomething(
              (Options) Enum.Parse(typeof(Options), option)
            );
    }

请注意,包装器方法是使用常规字符串参数,而不是原始选项列举的类型。如果您有要调用的方法的源代码,只需将此额外的包装器添加为过载,然后就完成了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top