[Mono-dev] Re: Constructor implementation obligation via interface?
Robert Jordan
robertj at gmx.net
Wed May 24 10:35:03 EDT 2006
Ympostor wrote:
> Kamil Skalski escribió:
>> There is a slight problem. In C# empty constructors are added
>> automatically, so you can't define a class without empty constructor.
>> What you can do is to define a class with private empty constructor,
>> which will prevent user from instanciating it directly. I guess there
>> is not way to forbid this.
>
> Thanks for your comment.
>
> But sorry because I think I haven't understood you completely.
>
> You say I can't define a class without empty constructor? That's not
> true. When you create an empty Console application in Visual Studio,
> there is a "class Program" that contains an static method but does not
> have any constructor.
It has an implicit default ctor.
> If you were trying to say that all classes, at the compiler level,
> contain an empty constructor, then ok; but what I want to do is to force
> a class to have a public empty constructor, and, if it doesn't have it,
> have the compiler to warn me because of the semantic requisite.
>
> Is there a way to achieve this?
No, not directly. If you really feel like you'd need this
semantic sugar, you may provide a creator for the class:
interface ICreator
{
Foo CreateFoo ();
}
class Foo
{
public Foo ()
{
}
}
class FooCreator : ICreator
{
public Foo CreateFoo()
{
return new Foo ();
}
}
Search the Web for "C# factory pattern".
Robert
More information about the Mono-devel-list
mailing list