我正在使用此程序包(https://github.com/shawnmclean/Mandrill-dotnet)在.net应用程序中实现山rill。现在有一个用于发送电子邮件的模型“ EmailMessage”。 EmailMessage模型内部有一个属性“ GlobalMergeVars”:
[JsonProperty("global_merge_vars")]
public List<MergeVar> GlobalMergeVars { get; }
现在我们可以看到GlobalMergeVars没有设置器,但是我必须为此设置一个值。如果我们转到此链接(https://mandrillapp.com/api/docs/messages.html)并单击“尝试”按钮,则可以为GlobalMergeVars设置值,但是我认为我正在使用的程序包中存在一些问题。但是我不能切换到其他软件包,因为与其他软件包相比,它非常灵活。那么,是否有必要为GlobalMergeVars设置价值?
PS:我还在github存储库上打开了一个问题。但是由于截止日期临近,我需要快速解决问题。
答案 0 :(得分:4)
我想我已经找到了您正在谈论的课程here。尽管EmailMessage
的属性与问题中显示的不同:
public class EmailMessage
{
#region Public Properties
...
/// <summary>
/// Gets the global_merge_vars.
/// </summary>
public List<MergeVar> GlobalMergeVars { get; private set; }
(这里的代码与问题中给出的代码之间的差异并不重要-我只是想知道我是否在查看正确的文件!)
缺少的set
等同于private set
。该类中包含以下方法,该方法可让您设置变量:
public void AddGlobalVariable(string name, dynamic content)
{
if (GlobalMergeVars == null)
{
GlobalMergeVars = new List<MergeVar>();
}
var mv = new MergeVar {Name = name, Content = content};
GlobalMergeVars.Add(mv);
}
答案 1 :(得分:0)
很抱歉成为坏消息的承担者,但是如果没有公共设置者,您将不能直接从课堂之外设置值。其他选项将通过构造函数或允许这样做的方法。但这似乎不存在任何可用的选项。
在旁注中,只需检查该属性是否可能没有可以整体设置的父属性。例如在C#中使用字体时,例如设置标签的字体。 Font对象的某些属性是“只读”的,不能在外部设置。但是可以设置Font对象本身。因此,在这种情况下,您必须在本地创建一个新的Font对象并设置所需的道具,然后将其分配/设置为新Font。
希望您能及时找到解决方法。
更新:
Rufo先生刚刚给您提供了解决方案:
答案是:在阅读 github.com/shawnmclean/Mandrill-dotnet/blob/master/src/Mandrill / ... 从第376行开始。该方法是针对您的情况设计的