Possible Duplicate:
Factory pattern in C#: How to ensure an object instance can only be created by a factory class?
Suppose I have a Factory class that knows how to make a Square. If I feel that only the Factory class knows how to make a square and I want to prevent others (even in the same assembly) from creating a Square what would be the correct (if there is such a thing) way to go about it?