J'essaye d'écrire des activités avec C# au lieu du concepteur et du XAML. VS2010 a été bogué et très lent pour cela, et il a aussi un très mauvais support de compilation (pour les noms de variables, les propriétés et ainsi de suite). Donc, j'essaye de créer des activités en héritant de la classe Activity directement, mais je rencontre un problème.Écrire un flux de travail Workflow Foundation avec C#
Voici mon code:
public class TestActivity : Activity
{
public InArgument<string> Username { get; set; }
public InArgument<string> Password { get; set; }
public OutArgument<bool> ValidCredential { get; set; }
public OutArgument<ProvisioningRole> Role { get; set; }
public OutArgument<Guid> Guid { get; set; }
protected override Func<Activity> Implementation
{
get
{
return() =>
{
return new Sequence()
{
Activities =
{
new AuthenticateUserActivity()
{
Username = this.Username,
Password = this.Password,
Guid = this.Guid,
Result = this.ValidCredential
},
new If()
{
Condition = this.ValidCredential,
Then = new GetUserRoleActivity()
{
Username = this.Username,
Password = this.Password,
Result = this.Role
}
},
}
};
};
}
set { base.Implementation = value; }
}
}
Le problème est le cas(), la condition. C'est supposé être un InArgument, mais this.ValidCredential est un OutArgument. J'ai essayé de créer une variable, lui assigner la valeur de ValidCredential. J'ai également essayé de mettre le résultat de AuthenticateUserActivity dans la variable, puis l'assigner à ValidCredential, mais j'obtiens une erreur disant que la propriété To d'Assign doit être spécifiée. J'ai cherché des didacticiels appropriés, mais tout ce que j'ai trouvé était un article MSDN qui avait une implémentation de code rapide et sale, et il utilisait des littéraux au lieu des arguments passés, donc pas d'aide à partir de là.