首页 > 解决方案 > 'System.ValueTuple' 不包含 ' addedcontactmail' 的定义

问题描述

我在 Azure 函数中收到此错误消息:

'System.ValueTuple<bool,string,string,string,string>' 不包含 ' addedcontactmail' 的定义

namespace My.Functions
{
    public class Result
    {
        public bool FunctionSuccessful { get; set; }
        public string Errorline1 { get; set; }
        public string Errorline2 { get; set; }
        public string Errorline3 { get; set; }
        public string Errorline4 { get; set; }
    }

    public static class NewFunction
    {
      [FunctionName("MyNewFunction")]
    public static async Task<dynamic> NewCall(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, ILogger log)
        {
        var context = await FunctionContext<dynamic>.Create(req);
        var args = context.FunctionArgument;

        bool functionsuccessful = false;
        string errorline1 = string.Empty;
        string errorline2 = string.Empty;
        string errorline3 = string.Empty;
        string errorline4 = string.Empty;

        var resultcontactemail = await AddContactEmail(desiredemail, language, clientAPI);
        if (resultcontactemail.addedcontactmail == false)
        {
            functionsuccessful = resultcontactemail.addedcontactmail;
            errorline1 = resultcontactemail.errorline1;
            errorline2 = resultcontactemail.errorline2;
            errorline3 = resultcontactemail.errorline3;
            errorline4 = resultcontactemail.errorline4;
            return new Result
            {
                FunctionSuccessful = functionsuccessful,
                Errorline1 = errorline1,
                Errorline2 = errorline2,
                Errorline3 = errorline3,
                Errorline4 = errorline4
            };
        }
    
        }

    public static async Task<(bool addedcontactmail, string errorline1, string errorline2, string errorline3, string errorline4)> AddContactEmail(this string emailaddress, string language, PlayFabClientInstanceAPI clientAPI)
    {
        bool addedcontactmail = false;
        string errorline1 = string.Empty;
        string errorline2 = string.Empty;
        string errorline3 = string.Empty;
        string errorline4 = string.Empty;

        var request = new PlayFab.ClientModels.AddOrUpdateContactEmailRequest();
        request.EmailAddress = emailaddress;
        var result = await clientAPI.AddOrUpdateContactEmailAsync(request);

        if (result.Error != null)
        {
            var errors = OnPlayFabError(result.Error, language);
            errorline1 = errors[0];
            errorline2 = errors[1];
            errorline3 = errors[2];
            errorline4 = errors[3];
        }
        else
        {
            addedcontactmail = true;
        }
          return (addedcontactmail, errorline1, errorline2, errorline3, errorline4);
    }

    }
}
        

以下代码行有问题吗?

 functionsuccessful = resultcontactemail.addedcontactmail;

“addcontactmail”和“functionsuccessful”都是bool,为什么不工作?

我希望“functionsuccessful”获得“resultcontactemail.addedcontactmail”的值,它可以是真或假。

究竟是什么问题?

标签: c#azure-functions

解决方案


您没有AddContactEmail正确使用函数调用,因为它是字符串的扩展。查看下面的代码,我已经在本地测试过并且工作正常:

[FunctionName("MyNewFunction")]
        public static async Task<dynamic> NewCall(
          [HttpTrigger(AuthorizationLevel.Anonymous, "post", "get", Route = null)] HttpRequestMessage req, ILogger log)
        {
            //var context = await FunctionContext<dynamic>.Create(req);
            //var args = context.FunctionArgument;

            bool functionsuccessful = false;
            string errorline1 = string.Empty;
            string errorline2 = string.Empty;
            string errorline3 = string.Empty;
            string errorline4 = string.Empty;

            var resultcontactemail = await desiredemail.AddContactEmail(language, clientAPI);
            if (resultcontactemail.addedcontactmail == false)
            {
                functionsuccessful = resultcontactemail.addedcontactmail;
                errorline1 = resultcontactemail.errorline1;
                errorline2 = resultcontactemail.errorline2;
                errorline3 = resultcontactemail.errorline3;
                errorline4 = resultcontactemail.errorline4;
                return new Result
                {
                    FunctionSuccessful = functionsuccessful,
                    Errorline1 = errorline1,
                    Errorline2 = errorline2,
                    Errorline3 = errorline3,
                    Errorline4 = errorline4
                };
            }

            return null;
        }

        public static async Task<(bool addedcontactmail, string errorline1, string errorline2, string errorline3, string errorline4)> AddContactEmail(this string emailaddress, string language, PlayFabClientInstanceAPI clientAPI)
        {
            bool addedcontactmail = false;
            string errorline1 = string.Empty;
            string errorline2 = string.Empty;
            string errorline3 = string.Empty;
            string errorline4 = string.Empty;

            var request = new PlayFab.ClientModels.AddOrUpdateContactEmailRequest();
            request.EmailAddress = emailaddress;
            var result = await clientAPI.AddOrUpdateContactEmailAsync(request);

            if (result.Error != null)
            {
                var errors = OnPlayFabError(result.Error, language);
                errorline1 = errors[0];
                errorline2 = errors[1];
                errorline3 = errors[2];
                errorline4 = errors[3];
            }
            else
            {
                addedcontactmail = true;
            }
            return (addedcontactmail, errorline1, errorline2, errorline3, errorline4);
        }

推荐阅读