如何在InArgument<string中获取“*”字符而不是任何字符串>

How I can get '*' characters instead of any string in InArgument<string>

提问人:Fannur 提问时间:4/17/2020 更新时间:6/2/2023 访问量:211

问:

我有一个属性“Text”,用于存储任何文本或密码。 当属性包含密码时,我需要显示字符“*”而不是密码。 我有一个视图,其中有一个与此属性关联的 ExpressionTextbox。 一切都显示得很好,但在执行时出现错误:无法使用“System.String”类型的参数。确保在活动上声明它

代码如下:

private InArgument<string> _text; 

public InArgument<string> Text
{
    get
    {
        if (Model.HideValue)
        {
            return new string('*', Model.Text.Length);
        }

        return _text;
    }
    set => _text = value;
}

....

protected override void Execute(NativeActivityContext context)
{
    Model.PopulateText = PopulateText.Get(context); // here I get an error

    base.Execute(context);
}

那么,当值类型为密码时,如何获取“*”符号而不是文本?

C# 字符串 异常 workflow-foundation-4 执行

评论

0赞 Oguz Ozgul 4/17/2020
InArgument<T> 的隐式运算符期望一个常量 T,我认为 learn.microsoft.com/en-us/dotnet/api/......。由于返回泄露密码中字符数的掩码也不是最佳做法,为什么不尝试使用常量字符,例如*return "********"
0赞 Fannur 4/20/2020
Oguz Ozgul,我试过了,我遇到了同样的错误
0赞 Oguz Ozgul 4/20/2020
嘿,发现这据说适用于 InArgument 和 OutArgument。stackoverflow.com/questions/11551971/......

答:

0赞 Vivian Mascarenhas 6/2/2023 #1

将 SecureString 类用于密码字段。而不是遮盖字段