잠시 동안이 작업을 수행하지 않았으며이 작업이 최선의 방법인지 알아야합니다. derived
클래스의 base
클래스에있는 보호 된 속성을 할당하는 (설정하는) 데 문제가 있습니다. 나는 해결책이 있지만 이것이 가장 좋은 것인지 알고 싶습니다. design pattern
을 사용하거나 더 좋은 방법이 있습니까?파생 클래스에서 보호 속성 할당
내 기본 클래스
public abstract class EmailBase
{
protected string Subject { get; set; }
protected string To { get; set; }
protected string From { get; set; }
protected virtual void Send()
{
using (MailMessage mail = new MailMessage())
{
// Ok send message here...
}
}
}
나는 그러나 나는를 게시 할 예정입니다, 나는 그래서 그것을 두 개의 파생 클래스를 가지고 것은 좋은 생각 일 것이다라고 생각 보내야하는 두 개의 서로 다른 이메일 템플릿이 문제의 한 파생 클래스를위한 코드.
public class DerivedOne: EmailBase
{
private const string emailTemplate = "some static text for the body...";
public DerivedOne()
{
}
// This is how I want to set the base class properties,
// but it feels I am just duplicating properties...
public string To
{
set
{
base.To = value;
}
}
그리고 컨트롤러의
... 내가 속성을 설정하면 청소기 경향이있다 생각으로 파생 된 생성자에서 등록 정보를 전송하지 경향이// A send email button was pressed by the user
private bool SendEmail(Model)
{
DerivedOne eMail = new DerivedOne()
{
To = Model.To;
};
}
. 그러나 파생 생성자에서 기본 속성을 설정할 수 있음을 알고 있습니다.
: base()
그래서 내가 컨트롤러에서 볼 수 있도록 파생 클래스에서 동일한 속성을 만드는 것이 잘못 되었습니까? (보호 된 속성은 물론 상속 밖에서 볼 수 없으므로)
기본 클래스의 속성이 공개되지 않은 이유는 무엇입니까? – galenus
다형성 이론을 망치지 않습니까? (그것은 내가 생각하는) 던지기가 아니었다. 그래서 나는 틀렸다고 생각한다. – user3428422
기본 유형의 참조를 통해 파생 된 유형에 액세스 할 수 있기 때문에 다형성을 적용합니다. – galenus