0

我有一点转折,比我想象的要麻烦一些。通常我会有一个 InArgument 并按如下方式使用它:

public InArgument<Int32> XYZ_ID { get; set; }
public InArgument<Int32> XYZ_COUNT { get; set; }

protected override IAsyncResult BeginExecute(...)
{
....snip....
_ABC_ID = XYZ_ID.Get(context),
_ABC_Count = XYZ_COUNT.Get(context)

这很好用,我认为我们接近相同过程的自定义对象,但我似乎无法弄清楚。ActvUsrPrgmResults 只是一类属性,例如 AccountName、FirstName 等。所以我像任何其他类型一样传递它。

public InArgument<bool> IsHappy { get; set; }
public InArgument<bool> IsClapping { get; set; }
public InArgument<ActvUsrPrgmResults> itm_ActvUsrPrgm { get; set; }

访问它虽然有点困难....对我来说。

protected override void Execute(CodeActivityContext context)
{
    NewPerson x = new NewPerson
    {
        AccountName = this.itm_ActvUsrPrgm.Get(?????
        //this doesn't work either
        AccountName = itm_ActvUsrPrgm.?????

换句话说,我看不到如何访问 itm_ActvUsrPrgm InArgument 的属性。

感谢您的任何帮助或指导 JB

附加信息

我在 ForEach(列表)中有这个 CodeActivity。因此,通用集合中的每个项目都是 ActvUsrPrgmResults 的单个实例。所以我把它交给我的 CodeActivity 认为我将有一个句柄来操作该项目的数据????

有趣的

现在根据威尔的评论,我开始考虑这种轻微的手。它有效,但不应该有更优雅的方法吗?

public InArgument<bool> IsHappy { get; set; }
public InArgument<bool> IsClapping { get; set; }
public InArgument<ActvUsrPrgmResults> itm_ActvUsrPrgm { get; set; }

protected override void Execute(CodeActivityContext context)
{
    ActvUsrPrgmResults y = itm_ActvUsrPrgm.Get(context);
    NewPerson x = new NewPerson
    {
        AccountName = y.AccountName....
4

1 回答 1

1

问题是我、我自己和我。我没有掌握传入的对象。对于某些幕后的原因,“InArgument”无法立即访问,直到您从给定的上下文。我不确定,但我怀疑这是由于运行了多个工作流,所以你不能只抓住任何 ole 对象,你必须从正确的上下文中获取对象。无论如何,这是我对内联学到的内容的评论。

public InArgument<bool> IsHappy { get; set; } //bool variable being passed in
public InArgument<bool> IsClapping { get; set; } //bool variable being passed in
public InArgument<ActvUsrPrgmResults> itm_ActvUsrPrgm { get; set; } //custom object being passed in

protected override void Execute(CodeActivityContext context)
{
    bool Happy = context.GetValue(this.IsHappy);
    bool Clap = context.GetValue_this.IsClapping);
    ActvUsrPrgmResults y = context.GetValue(this.itm_ActvUsrPrgm);
    //NOW!!! we have a handle to the proper objects for this context

    //This also works. I just flip flopped the InArgument property and the context.
    ActvUsrPrgmResults y = itm_ActvUsrPrgm.Get(context);

    NewPerson x = new NewPerson
    { 
        AccountName = y.AccountName....
于 2012-12-27T20:46:07.287 回答