如何将对类属性的访问限制为仅在同一名称空间内
-
06-07-2019 - |
题
如何将对类属性的访问限制在同一名称空间中?考虑以下课程。 Content类不能发布自己,而是发布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模式可以帮助我解决这个问题?
解决方案
您可以使用“内部”信息。访问修饰符,以便只有同一个程序集中的类可以修改Content类的State成员(但是每个人甚至可以在其他程序集中获取值)。
public State Status { get; internal set; }
所以现在ContentService可以设置状态,因为它在同一个Assembly中,但外部调用者只能获取状态(不允许它们设置)。
不隶属于 StackOverflow