如何创建阻止直接实例化类的工厂类?
说,我有类评论,只能从一个类CommentFactory实例化。 我不希望评论能够直接实例化。
我想我可以这样做:
public partial class Comment
{
private Comment(){}
public Comment CreateComment(User user,string str)
{
Comment cmt=new Comment();
user.AddComment(cmt);
cmt.User=user;
return cmt;
}
}
这段代码是干净的吗?
现在,我面临的问题是,Comment是一个部分类,Linq对SQL进行了部分实现。和Linq to SQL创建了这个类的公共构造函数,那么我怎么能绕过这个呢?有没有'技巧'?
答案 0 :(得分:0)
如果Comment和CommentFactory在同一个程序集中,那么使Comment的所有构造函数都会阻止程序集之外的任何代码创建Comment的实例。
答案 1 :(得分:0)
您可以将构造函数internal
标记为CommentFactory所在的程序集,然后让使用者访问CommentFactory类。我不确定如何“强制”它。
答案 2 :(得分:0)
您要问的问题可以回答here。它并不完全相同,但解决方案几乎完全相同。
我认为至少有3个技巧可以解决您的问题,因此它会为您增加更多灵活性。