【问题标题】:Php 2d array as C# 2d array/structPhp 2d 数组作为 C# 2d 数组/结构
【发布时间】:2010-04-23 12:17:33
【问题描述】:

我正在使用 MailChimp 的 API 将电子邮件订阅到列表。函数listsubscribe()用于邮件订阅:

public static  listSubscribe(string apikey, string id, string email_address, array merge_vars, string email_type, boolean double_optin, boolean update_existing, boolean replace_interests, boolean send_welcome)

我为他们的 API 下载了 MailChimp 的官方 .NET wrapper

在 Visual Studio 中查看时,这是重载函数之一:

listSubscribe(string apikey, string id, string email_address, MCMergeVar[] merges)

当我点击 MCMergeVar[] 的定义时,会出现:

[XmlRpcMissingMapping(MappingAction.Ignore)]
    public struct MCMergeVar
    {
        public string name;
        public bool req;
        [XmlRpcMissingMapping(MappingAction.Error)]
        public string tag;
        public string val;
    }

在 MailChimp 网站上的一个 php 示例中,merges 变量是这样声明的:

$merge_vars = array('FNAME'=>'Test', 'LNAME'=>'Account', 'INTERESTS'=>'');

如何为我的 C# 包装器正确编写此数组? 我尝试过这样的事情:

MCMergeVar[] subMergeVars = new MCMergeVar[1];
subMergeVars["FNAME"] = "Test User";

但它需要在现在放置"FNAME" 的地方使用int,所以这不起作用...

提前致谢, 伊莱

编辑 1: 我尝试了 FoxFire 的解决方案,但没有来自 subMergeVars 的数据被传递到 MailChimp 服务器,只有电子邮件被传递:

// Subscribe email to list
            string subID = "26973e52cc";
            string subEmail = "mymail@some.com.hr";
            MCMergeVar[] subMergeVars = new MCMergeVar[5];
            subMergeVars[0].name = "FNAME";
            subMergeVars[0].val = "FNDynamic";
            subMergeVars[1].name = "LNAME";
            subMergeVars[1].val = "LNDynamic";

            mailChimp.api.listSubscribe(subID, subEmail, subMergeVars, "html");

【问题讨论】:

    标签: c# php arrays struct


    【解决方案1】:

    最有可能:

    MCMergeVar[] subMergeVars = new MCMergeVar[1]; 
    subMergeVars[0].name = "FNAME"; 
    subMergeVars[0].val = "Test User"; 
    

    【讨论】:

    • 对我来说看起来不错,但数据仍未传递到 MailChimp 服务器...我现在将用我尝试过的示例编辑我的问题
    • 我想通了... .name 需要替换为 .val 并且效果很好 :) 谢谢!
    • 不清楚“.name 需要替换为 .val”是什么意思。能发个sn-p吗?
    • 对不起,我写的不对,应该是“.name需要用.tag替换”,像这样subMergeVars[0].tag = "FNAME";而不是subMergeVars[0].name = "FNAME";
    【解决方案2】:

    试试:

    var mergeVars = new List<MCMergeVar>();
    
    mergeVars.Add(new MCMergeVar() { tag = "FNAME", val = "Test User First Name" });
    mergeVars.Add(new MCMergeVar() { tag = "LNAME", val = "Test User Last Name" });
    

    然后使用:

    mergeVars.ToArray()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多