동일한 네임 스페이스 내에서만 클래스 속성에 대한 액세스를 제한하는 방법
-
06-07-2019 - |
문제
동일한 네임 스페이스 내에서 클래스 속성에 대한 액세스를 어떻게 제한합니까? 다음 수업을 고려하십시오. 컨텐츠 클래스는 자체를 게시 할 수 없으며 Contentservice 클래스는 주를 게시하기 전에 몇 가지 작업을 수행합니다.
public class Content : Entity, IContent
{
public string Introduction { get; set; }
public string Body { get; set; }
public IList<Comment> Comments { get; set; }
public IList<Image> Images { get; private set; }
public State Status { get; }
}
public class ContentService
{
public IContent Publish(IContent article)
{
//Perform some biz rules before publishing
article.Status = State.Published;
return article;
}
}
Contentservice 클래스 만 기사의 상태를 변경할 수 있도록하려면 어떻게해야합니까?
내가 이것을 다루는 데 도움이되는 deisng 패턴이 있습니까?
해결책
동일한 어셈블리 내의 클래스 만 콘텐츠 클래스의 상태 구성원을 수정할 수 있도록 "내부"액세스 수정자를 사용할 수 있습니다 (그러나 다른 어셈블리의 모든 사람은 값을 얻을 수 있습니다).
public State Status { get; internal set; }
따라서 이제 Contentservice는 동일한 어셈블리에 있기 때문에 상태를 설정할 수 있지만 외부 발신자는 상태 만 얻을 수 있습니다 (설정할 수는 없습니다).
제휴하지 않습니다 StackOverflow