Ci-dessous le parent & Classe enfant.Essayer de comprendre la chaîne d'héritage
public class ParentController : ApiController
{
public ICustomer customer { get; set;}
public ICustUtil util { get; set;}
}
public class ChildController : ParentController
{
//no issue here
public string Get()
{
customer = util.GetCustomers();
}
}
Si je fais les propriétés de la classe parent comme protégée & essayez de les utiliser, je reçois Object NULL reference Exception
public class ParentController : ApiController
{
protected ICustomer customer { get; set;}
protected ICustUtil util { get; set;}
}
public class ChildController : ParentController
{
//Object Null reference exception at run time here
public string Get(){
customer = util.GetCustomers();}
}
Je suis en train de comprendre comment fonctionne-t-il la différence mise à jour public
-protected
spécificateur d'accès.
S'il vous plaît noter: -
- J'utilise
Castle Windsor DI
contenant
S'il vous plaît ne pas tenir compte convention de nommage pour l'instant.
@ Kgn-web: Non, ce code ne sera pas compilé. Vous avez besoin de quelque chose comme 'public class ParentController: ApiController'. Alors votre code 'ChildController' ne compilera pas non plus, car vous avez une non-déclaration directement dans la déclaration de classe. S'il vous plaît fournir un [mcve]. (Je vous conseille fortement de connaître les conventions de nommage .NET.) –
@JonSkeet, Mon erreur de faute de frappe. Je m'excuse sincèrement pour cela –
La raison de votre exception concernant vos erreurs de compilation est probablement que vous n'instantiez jamais votre propriété 'utils' dans votre classe' ChildController'. – HimBromBeere