Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Preventng direct creation of sub-class instances
Message
De
28/07/2006 11:03:25
 
 
À
28/07/2006 10:42:14
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
Information générale
Forum:
ASP.NET
Catégorie:
Code, syntaxe and commandes
Divers
Thread ID:
01141060
Message ID:
01141123
Vues:
22
>>>>I tried using:
>>>>
>>>>  public class BaseObject
>>>>    {
>>>>        private BaseObject() { }
>>>>    }
>>>>
>>>>to prevent other developers directly creating an instance of the class. I was hoping to sub-class from this and have the behaviour inherited by these classes. Seems that's not possible - in fact I can't sub-class from BaseObject at all because 'BaseObject is inaccessible due to it's protection level'. Any other way to achieve what I need (I don't like the idea of having to put private constructors in all the leaf classes)
>>>>

>>>Wouldn't 'protected' in base do what you want?
>>
>>Do you mean 'protected BaseObject(){}'?
>>That doesn't prevent creation of the object.... :-{


>Yes but even private/internal ones could be created anyway. Protected/private/internal at least puts some control over it.

AFAICS, private constructors do (and should) prevent the object from being created. Example:
namespace Test
{
    public class MyObject
    {
        private MyObject() { }

        public static MyObject NewMyObject()
        {
            return new MyObject();
        }
    }
    class Tester
    {
        static void Main(string[] args)
        {
            // Next line won't compile because of accessibility:
            //MyObject t = new MyObject();
            //But you can do it this way:
            MyObject t = MyObject.NewMyObject();
        }
    }
}
Or am I missing something,
Viv
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform