Можно ли установить значение в свойстве без установщика? - PullRequest
0 голосов
/ 23 января 2019

Я использую Mandrill в приложении .net с помощью этого пакета (https://github.com/shawnmclean/Mandrill-dotnet). Теперь есть модель «EmailMessage», которая используется для отправки электронной почты. Внутри модели EmailMessage есть свойство «GlobalMergeVars»:

   [JsonProperty("global_merge_vars")]
   public List<MergeVar> GlobalMergeVars { get; }

Теперь мы можем видеть, что для GlobalMergeVars нет установщика, но я должен установить значение для этого. Если мы перейдем по этой ссылке (https://mandrillapp.com/api/docs/messages.html) и нажмем кнопку «Попробуйте»), мы сможем установить значение для GlobalMergeVars, но я думаю, что в пакете, который я использую, есть какая-то проблема. Но я не могу переключиться на другие пакет, потому что он очень гибкий по сравнению с другими. Так есть ли в любом случае, чтобы установить значение для GlobalMergeVars?

PS: я также открыл вопрос о репозитории github. Но из-за некоторых сжатых сроков мне нужно быстрое решение проблемы.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я думаю, что нашел класс, о котором вы говорите здесь .Хотя это свойство 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);
}
0 голосов
/ 23 января 2019

Мне жаль быть носителем плохих новостей, но если нет открытого установщика, вы не можете напрямую установить значение вне класса. Другие варианты будут через конструктор или метод, который позволяет такое. Но не похоже, что у вас есть такие опции.

Что касается примечания, просто проверьте, не имеет ли это свойство родительское свойство, которое вы можете установить целиком. Например, в C # при работе со шрифтами, например, установить шрифт метки. Некоторые свойства объекта Font доступны только для чтения и не могут быть установлены извне. Но сам объект Font может быть установлен. Таким образом, в таких случаях вы должны создать новый объект Font локально и установить необходимый реквизит, а затем назначить / установить его как новый шрифт.

Надеюсь, вы найдете временное решение.

UPDATE:

Сэр Руфо только что дал вам решение:

Ответ: читайте в github.com/shawnmclean/Mandrill-dotnet/blob/master/src/Mandrill/... начиная со строки 376. Этот метод предназначен для вашего случая

...