2013-11-07 3 views
0

У меня есть 4 элемента:Как использовать get и set?

  • класса А EmailGT.cs (для получения и установки вещь)
  • Класс Email.cs (на самом деле отправить по электронной почте)
  • Два других Windows Forms к нажмите кнопку и отправьте электронное письмо

Я хотел использовать get и set для определения сообщения и человека, который получит электронное письмо.

Я сделал это:

class EmailGT 
{ 
    private string _mensagem = string.Empty; 
    private string _destinatario = string.Empty; 

    public string mensagem 
    { 
     get { return _mensagem; } 
     set { _mensagem = value; } 
    } 

    public string destinatario 
    { 
     get { return _destinatario; } 
     set { _destinatario = value; } 
    } 

} 
} 

В Email.cs у меня есть это (я не отправлял весь код, так как он не будет необходимости):

class Email 
{ 
    public void SendEmail() 
    { 
     EmailGT x = new EmailGT(); 
     string destinatario = x.destinatario; 
     string mensagem = x.mensagem; 
     System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
     message.To.Add(destinatario); 
     message.Subject = "something"; 
     message.Body = mensagem; 

И в Windows Forms (оба) у меня есть это:

EmailGT x = new EmailGT(); 
    Email z = new Email(); 
    x.mensagem = "teste 2"; 
    x.destinatario = "my email"; 
    z.SendEmail(); 

Однако оба поля пустые на Email.cs. Наверное, я не понимал, как это использовать. Может кто-нибудь сказать, что не так? Благодаря!

+0

Значение по умолчанию для строки является пустая строка. Вам не нужно явно определять это, и вам не нужно создавать поле поддержки в вашем случае. 'public string mensagem {get; set;} 'отлично. –

+0

@JeroenVannevel Я пробовал те на первом месте, но я думал, что это сработает, если я переключусь на текущий код. Я ошибался :( – athosbr99

ответ

2

EmailGT x в SendEmail не имеет ничего общего с EmailGT x, на котором вы устанавливаете свойства. Может быть, вы хотите изменить SendEmail, чтобы принять EmailGT в качестве параметра:

class Email 
{ 
    public void SendEmail(EmailGT x) 
    { 
     string destinatario = x.destinatario; 
     string mensagem = x.mensagem; 
     System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
     message.To.Add(destinatario); 
     message.Subject = "something"; 
     message.Body = mensagem; 
     // snip 
    } 
} 

, то вы бы проходEmailGT к SendEmail:

EmailGT x = new EmailGT(); 
x.mensagem = "teste 2"; 
x.destinatario = "my email"; 

Email z = new Email(); 
z.SendEmail(x); 
1

Вы должны изменить SendEmail метод декларации взять EmailGT экземпляр как параметр, и использовать этот экземпляр внутри метода вместо создания локальной переменной.

public void SendEmail(EmailGT x) 
{ 
    string destinatario = x.destinatario; 
    string mensagem = x.mensagem; 
    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
    message.To.Add(destinatario); 
    message.Subject = "something"; 
    message.Body = mensagem; 
} 

И использование:

EmailGT x = new EmailGT(); 
x.mensagem = "teste 2"; 
x.destinatario = "my email"; 

Email z = new Email(); 
z.SendEmail(x); 
+0

Ваш тент тоже прав, но stackoverflow не позволил мне выбрать двух тентов справа. Мне нужно было выбрать один, простите меня :( – athosbr99

+0

@ athosbr99 вы можете в любом случае перенести этот ответ. – groverboy

Смежные вопросы