Ho una classe con alcune funzioni virtuali, facciamo finta questo è uno di loro:metodi virtuali Quando si esegue il un'istanza di una classe
public class AClassWhatever
{
protected virtual string DoAThingToAString(string inputString)
{
return inputString + "blah";
}
}
voglio creare un'istanza di questa classe, mentre l'override "DoAThingToAString" in linea, proprio come ho possono dichiarare le proprietà inline in una dichiarazione, come segue:
...
AClassWhatever instance = new AClassWhatever
{
DoAThingToAString = new function(string inputString)
{
return inputString + inputString + " fill my eyes."
}
}
...
E ora per "istanza", DoAThingToAString viene sostituito con tale definizione. Devo essere in grado di definire il comportamento predefinito nella definizione della classe e solo sovrascriverlo in base alle esigenze, in momenti diversi e non voglio proliferare un gruppo di sottoclassi per farlo.
So che ho bisogno di usare delegati o qualcosa di simile, ma sono stato fuori dal gioco della sintassi per troppo tempo e Google mi stava dando troppe informazioni irrilevanti.
Questa è la sintassi ero cercando, ma una domanda stupida. In DoAThingToAString, sto usando un metodo di estensione controller chiamato da un'azione controller in quanto tale: 'this.DoExtensionMethod (someString);' Non ho più un riferimento a "questo" ora che sono all'interno di Func definizione. C'è un modo per ottenere un riferimento al chiamante o devo passarlo insieme al mio altro input? – kamii
@kamii, dovrai passare un riferimento all'oggetto o qualsiasi altro valore specifico di cui hai bisogno. Questa è una funzione anonima, quindi non ha idea dell'istanza. (per favore, controlla me). – gunr2171