2016-11-21 3 views
0

В моей консольной программе я хочу отправить электронное сообщение кому-то, используя System.Net.Mail.MailMessage. Тем не менее, я не могу инициализировать его :(требует ли MailMessage инициализации каких-либо параметров?

имен:

using System.Net; 
using System.Net.Mail; 

код:

class emailHelper 
{ 
    string to = "[email protected]"; 
    string from = "[email protected]"; 
    MailMessage message = new MailMessage(from, to);// errors here 
} 

сообщение об ошибке о:

Поле инициализатор не может ссылаться на не- статическое поле, метод или property 'programA.emailHelper.from'

Поля инициализатор не может ссылаться на нестатическое поле, метод или свойства «programA.emailHelper.to»

Я понятия не имею, что делать я пропускаю что-то установить перед использованием MailMessage.

Любая идея?

ответ

0

Сообщение об ошибке даст вам всю Информация.

Поле инициализатор не может ссылаться на нестатическое поле, метода или свойство

Так что, если вы хотите, чтобы заставить его работать, вы должны сделать ваши строковые поля статичны. Я сомневаюсь, что вы хотите.

class emailHelper 
{ 
    static string to = "[email protected]"; 
    static string from = "[email protected]"; 
    MailMessage message = new MailMessage(from, to);// errors here 
} 

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

public class EmailHelper 
{ 
    public string To {get; set;} 
    public string From {get; set;} 
    public MailMessage message {get; set;} 

    public EmailHelper(string to, string from) 
    { 
     To = to; 
     From = from; 

     message = new MailMessage(from, to); 
    } 

} 

В этом случае у вас есть адреса, которые выходят из помощника и вы можете создать несколько MailMessage классов.

0

В сообщении об ошибке указан

Поля инициализатор не может ссылаться на нестатическое поле, метод или свойства

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

class emailHelper 
{ 
    string to = "[email protected]"; 
    string from = "[email protected]"; 
    MailMessage message; // Declare here 
    public emailHelper() // Constructor 
    { 
     message = new MailMessage(from, to);//initialize here 
    } 
} 

Или использовать только для чтения значения свойства, как это:

public MailMessage Message 
{ 
    get { return new MailMessage(from, to); } 
} 
0

Поле инициализатор не может ссылаться на нестатический поле, метод или свойство «Поле» Поля экземпляра не может быть использован для инициализации других полей экземпляра за пределами метода.Если вы пытаетесь инициализировать переменную вне метода, рассмотрим выполнение инициализации внутри конструктора класса

Проверьте документацию: Compiler Error CS0236

// CS0236.cs 
public class MyClass 
{ 
    public int i = 5; 
    public int j = i; // CS0236 
    public int k;  // initialize in constructor 

    MyClass() 
    { 
     k = i; 
    } 

    public static void Main() 
    { 
    } 
} 
Смежные вопросы