【问题标题】:Extending Types in UiPath在 UiPath 中扩展类型
【发布时间】:2020-12-10 16:04:00
【问题描述】:

我有一个扩展类型的 c# 类,如下所示:

public static class TypeExtensions
{
    public static String nameof<TType, TMember>(this TType obj, Expression<Func<TType, TMember>> propertyAccessor)
    {
        if (propertyAccessor.Body.NodeType == ExpressionType.MemberAccess)
        {
            var memberExpression = propertyAccessor.Body as MemberExpression;
            if (memberExpression == null)
                return null;
            return memberExpression.Member.Name;
        }
        return null;
    }
}

在 C# 中,我通常会像这样访问方法:

obj.nameof(o => o.PropertyXY)

但是,在 UiPath Studio 中,我无法扩展它。这是我尝试过的方法

obj.[nameof](Function(o) o.PropertyXY)

我已确保正确导入命名空间。

我做错了什么还是在 UiPath 中扩展类型有任何已知限制?

提前致谢。 艾伦

编辑 在正确清理 VisualStudio 库项目(通过删除 bin/obj 文件夹)并重建后,我现在至少能够看到 Intellisense 中列出的扩展方法。 但是,当调用它时 UiPath 抱怨:“由于对象的当前状态,操作无效”

【问题讨论】:

    标签: .net extension-methods rpa uipath uipath-studio


    【解决方案1】:

    @Alan - 在 UiPath 中,访问自定义类和对象的唯一方法是通过 nuget 包。我自己没有尝试过,但理论上它应该按照以下步骤工作:

    1. 创建一个类库项目,然后创建该项目的 nuget 包
    2. 通过单击 UiPath 中的管理包将该 nuget 包导入您的项目
    3. 在 xaml 页面中导入包的命名空间
    4. 这应该使您的静态方法可用于您的活动

    请试一试,告诉我结果如何。

    另一种选择是使用 Visual Studio 创建自定义活动,但我认为对于这样一个微不足道的问题来说这可能是一种矫枉过正

    【讨论】:

    • 如问题中所述,我已确保正确导入了命名空间。这正是我所做的。当我尝试访问扩展方法时,UiPath 抱怨“由于对象的当前状态,操作无效”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2018-08-01
    相关资源
    最近更新 更多