2010-04-23 11 views
0

J'utilise l'API de MailChimp pour m'abonner à une liste. Fonction listsubscribe() est utilisé pour abonnement par courriel:Php 2d tableau comme C# 2d array/struct

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) 

J'ai téléchargé .NET wrapper officiel de MailChimp pour leur API

Lorsque l'on regarde dans Visual Studio, c'est l'une des fonctions surchargées:

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

Lorsque je clique sur sur la définition de MCMergeVar [], cela sort:

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

Dans un exemple de php sur le site Web de MailChimp, c'est la variabilité de merges est déclarée:

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

Comment écrire correctement ce tableau pour mon wrapper C#? J'ai essayé quelque chose comme ceci:

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

Mais il faut un int en place où "FNAME" est maintenant placé, si cela ne fonctionne pas ...

Merci à l'avance, Ile

EDIT 1: J'ai essayé la solution FoxFire mais aucune donnée de subMergeVars n'est transmise au serveur MailChimp, seul le courrier électronique est passé:

// Subscribe email to list 
      string subID = "26973e52cc"; 
      string subEmail = "[email protected]"; 
      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"); 

Répondre

1

Très probablement:

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

Il semble ok pour moi, mais les données sont toujours pas transmis au serveur MailChimp .. Je vais maintenant modifier ma question avec l'exemple que j'ai essayé –

+0

Je l'ai deviné ... .nom doit être remplacé par .val et ça marche très bien :) Merci! –

+0

Ce n'est pas clair ce que vous voulez dire par ".name doit être remplacé par .val". Pourriez-vous publier un extrait? –

0

Essayez:

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" }); 

Ensuite, utilisez:

mergeVars.ToArray()