2016-12-18 7 views
0

Я довольно новичок в C# и пытаюсь создать вспомогательный метод, который возвращает объект на основе определенных условий. Он должен иметь возможность вернуть объект сам по себе с правильными строками результата, вытащенными из базы данных, но, как вы можете видеть, я получаю сообщение об ошибке Var Result, я также пробовал «новый» способ декларации, но это также не удалось. У меня есть методы googled C# и их вызов, но учебники кажутся гораздо более базовыми и то, что я уже знаю.C# Синтаксис вокруг метода вызова внутри себя

private EmailTemplateContents(User user, int companyId, string template, int cultureId) 
     { 
      var result = new EmailTemplateContents(); 
      EmailTemplateContents et = new EmailTemplateContents(); 
      var extendedInfo = _accountService.GetUserExtendedInfoOrDefault(user.Id, companyId); 
      var theCulture = _languageService.GetLanguageCodeOrDefault(extendedInfo.LanguageCode).Culture; 
      string theClass = "campaign"; 

      var bodyTextKey = string.Format("{0}-{1}-bodytext", companyId, template); 
      result.BodyText = _resourceProviderService.LocalizationResourceValue(theClass, bodyTextKey, theCulture); 

      var subjectKey = string.Format("{0}-{1}-subject", companyId, template); 
      result.Subject = _resourceProviderService.LocalizationResourceValue(theClass, subjectKey, theCulture); 

      var signatureKey = string.Format("{0}-{1}-signature", companyId, template); 
      result.Signature = _resourceProviderService.LocalizationResourceValue(theClass, signatureKey, theCulture); 

      var buttonLinkKey = string.Format("{0}-{1}-buttontext", companyId, template); 
      result.ButtonText = _resourceProviderService.LocalizationResourceValue(theClass, buttonLinkKey, theCulture); 

      return result; 
     } 

enter image description here

+0

Какова именно ошибка, с которой вы сталкиваетесь "Var Result Declaration"? –

+0

Есть ли параметр меньше конструктора? – Dreamweaver

+0

Невозможно разрешить символ 'EmailTemplateContents' – theHussle

ответ

1

вы не определили ни ваше имя или тип возвращаемого значения метода, он выглядит, как вы пропустили название метода, ваше определение метода должно быть:

private EmailTemplateContents GetEmailTemplateContents(User user, int companyId, string template, int cultureId) 
{ 
    ................. 
    .................. 
} 

так что ваши наконец, будет выглядеть так:

private EmailTemplateContents GetEmailTemplateContents(User user, int companyId, string template, int cultureId) 
{ 
    var result = new EmailTemplateContents(); 

    var extendedInfo = _accountService.GetUserExtendedInfoOrDefault(user.Id, companyId); 
    var theCulture = _languageService.GetLanguageCodeOrDefault(extendedInfo.LanguageCode).Culture; 
    string theClass = "campaign"; 

    var bodyTextKey = string.Format("{0}-{1}-bodytext", companyId, template); 
    result.BodyText = _resourceProviderService.LocalizationResourceValue(theClass, bodyTextKey, theCulture); 

    var subjectKey = string.Format("{0}-{1}-subject", companyId, template); 
    result.Subject = _resourceProviderService.LocalizationResourceValue(theClass, subjectKey, theCulture); 

    var signatureKey = string.Format("{0}-{1}-signature", companyId, template); 
    result.Signature = _resourceProviderService.LocalizationResourceValue(theClass, signatureKey, theCulture); 

    var buttonLinkKey = string.Format("{0}-{1}-buttontext", companyId, template); 
    result.ButtonText = _resourceProviderService.LocalizationResourceValue(theClass, buttonLinkKey, theCulture); 

    return result; 
} 
+0

Я до сих пор получаю сообщение «Невозможно разрешить символ» «EmailTemplateContents». – theHussle

+0

У вас есть тип с именем 'EmailTemplateContents' в вашем проекте, или вам может быть не хватает инструкции для этого типа –

+0

Нет. Это означает, что мне нужно объявить его как новый тип? если да, то как это делается в C#? – theHussle

1

Это не вспомогательный метод. У этого есть структура конструктора. Метод имеет возвращаемое значение в объявлении подписи:

public ReturnType MethodName(int parameter); 

Конструктор будет иметь только имя класса с параметрами, как в вашем случае. Когда вы вызываете эту строку:

var result = new EmailTemplateContents(); 

компилятор ожидает конструктор без параметров типа: EmailTemplateContents. Это означает, что вы хотите создать объект такого типа.

Если называется ваш класс EmailTemplateContents вам нужно переименовать этот метод и дать ему возвращаемое значение:

private EmailTemplateContents A_different_Name(User user, int companyId, string template, int cultureId) 

и убедитесь, что у вас есть конструктор без параметров в классе EmailTemplateContents

1

Вы гаванью» t задает метод имя, только тип. Он должен выглядеть примерно так:

private EmailTemplateContents GetEmailContents(User user, int companyId, string template, int cultureId) 
{ 
} 
Смежные вопросы