Come posso prendere il Type
della classe ereditata e passarlo nel costruttore di base della classe anche ereditato? Vedere il codice di esempio:Passare il tipo di oggetto corrente nella chiamata del costruttore di base
// VeryBaseClass is in an external assembly
public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
}
}
// BaseClass and InheritedClass are in my assembly
public abstract class BaseClass : VeryBaseClass
{
public BaseClass(MyObject myObject) :
base(this.GetType().Name, myObject) // can't reference "this" (Type expected)
{
}
}
public class InheritedClass : BaseClass
{
public InheritedClass(MyObject myObject)
{
}
}
La linea base(typeof(this).Name, myObject)
non funziona perché non posso ancora riferimento this
, come l'oggetto non è terminata la costruzione e pertanto non esiste.
È possibile afferrare lo Type
dell'oggetto attualmente in costruzione?
EDIT:
Corretto il campione come orsogufo suggested, ma ancora non funziona, come this
è indefinito.
EDIT 2:
tanto per chiarire, voglio finire con "InheritedClass"
essere passato al costruttore VeryBaseClass(string className, MyObject myObject)
.
Perché vuoi farlo?Un costruttore non dovrebbe preoccuparsi se viene chiamato per istanziare la propria classe o una classe derivata. – AakashM
Penso che ti manchi il punto. L'assembly esterno che definisce la classe base di un framework che utilizzo ha richiesto la rappresentazione della stringa della classe stessa da passare nel costruttore. Finora l'ho inserito come ci si aspetterebbe (come una stringa), ma preferirei che lo risolvesse in fase di esecuzione per motivi di sanità mentale. – Codesleuth
Oh capisco, non è la tua classe. Continuo a pensare che sia una cosa negativa che importi :) – AakashM