Comment créer une classe de fabrique qui empêche l'instanciation directe d'une classe? Par exemple, j'ai un commentaire de classe qui ne devrait être instancié qu'à partir d'une classe CommentFactory. Je ne veux pas que le commentaire puisse être instancié directement.classe de fabrique qui empêche l'instanciation directe
Je pensais que je pouvais le faire:
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;
}
}
est ce code propre?
maintenant, le problème auquel je suis confronté est que le commentaire est une classe partielle avec une implémentation partielle effectuée par Linq à SQL. et Linq to SQL crée un constructeur public de cette classe, alors comment puis-je contourner cela? Y a-t-il un «truc»?
Oui, le code que je ne veux pas accéder au constructeur Comment se trouve dans le même assemblage. créer un autre assembly dois-je créer un nouveau projet dll? – Attilah
oui, si vous créez un nouveau projet dll, tout code dans ce projet ne serait pas capable de créer des instances de commentaires tant que les constructeurs de Commentaire sont 'internal'. –