[Mono-dev] Re: Constructor implementation obligation via interface?

David Waite dwaite at gmail.com
Wed May 24 19:22:02 EDT 2006


Yes, you would want a factory (creation pattern) - a class to create
the class you want. Then it can have an interface which takes whatever
arguments are appropriate, and returns whatever implementation needed.

-David Waite

On 5/24/06, Robert Jordan <robertj at gmx.net> wrote:
> 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
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>



More information about the Mono-devel-list mailing list