Articles of delega l’

Come passare un metodo arbitrario (o delegato) come parametro per una funzione?

Devo essere in grado di passare un metodo arbitrario ad alcune funzioni myFunction : void myFunction(AnyFunc func) { … } Dovrebbe essere ansible eseguirlo con altri metodi statici, di istanza, pubblici o privati ​​o anche delegati: myFunction(SomeClass.PublicStaticMethod); myFunction(SomeObject.PrivateInstanceMethod); myFunction(delegate(int x) { return 5*x; }); Il metodo passato può avere un numero qualsiasi di parametri e […]

Delegato all’azione Come ottenere l’istanza che chiama il metodo

Ho un’azione e mi chiedo come potrei accedere all’istanza che chiama il metodo. Esempio: this.FindInstance(() => this.InstanceOfAClass.Method()); this.FindInstance(() => this.InstanceOfAClass2.Method()); this.FindInstance(() => this.InstanceOfAClass3.Method()); public void FindInstance(Action action) { // The action is this.InstanceOfAClass.Method(); and I want to get the “Instance” // from “action” } Grazie

Ottenere un sistema-clock-change-tick in C #

È un modo per eseguire un delegate o un event in C # quando i secondi, i minuti, le ore, … cambiano nel clock di sistema, senza usare un timer che controlla ogni millisecondo se la proprietà è cambiata ed esegue l’evento con un ritardo di massimo un millisecondo. Voglio quindi evitare di sondare e […]

Sincronizzare le azioni in Silverlight

Ho un’applicazione Silverlight che utilizza le azioni per ottenere dati dal modello (che riceve nuovamente i dati dai servizi WCF). Ho bisogno di sincronizzare in qualche modo due ActionCallbacks, o di aspettare per loro, e quindi eseguire del codice. Esempio: _model.GetMyTypeList(list => { MyTypeList.AddRange(list); }); _model.GetStigTypeList(list => { StigTypeList.AddRange(list); }); doSomethingWhenBothHaveReturned(); So che posso usare […]

I delegati non sono solo interfacce stenografiche?

Supponiamo di avere: interface Foo { bool Func(int x); } class Bar: Foo { bool Func(int x) { return (x>0); } } class Baz: Foo { bool Func(int x) { return (x<0); } } Ora possiamo gironzolare Bar e Baz come un Foos e chiamare i loro metodi Func. I delegati lo semplificano un po […]

Spiega i delegati di .NET

Quindi leggo MSDN e Stack Overflow. Capisco cosa fa l’Action Delegate in generale, ma non è fare clic non importa quanti esempi faccio. In generale, lo stesso vale per l’idea dei delegati. Quindi questa è la mia domanda. Quando hai una funzione come questa: public GetCustomers(Action<IEnumerable,Exception> callBack) { } Cos’è questo e cosa dovrei passare […]

Ambiguità con parametro Action e Func

Com’è ansible che questo codice TaskManager.RunSynchronously(fileMananager.BackupItems, package); causa un errore di compilazione The call is ambiguous between the following methods or properties: ‘TaskManager.RunSynchronously(System.Action, MyObject)’ and ‘TaskManager.RunSynchronously(System.Func, MyObject)’ quando la firma dell’azione è public void BackupItems(MyObject package) e i metodi “ambigui” sono static class TaskManager { public static void RunSynchronously(Action task, TInput param) { Task.Factory.StartNew(() => […]

Se i delegati sono immutabili, perché posso fare cose come x + = y?

Leggere C # In Depth, 2a edizione , sezione 2.1.2 sulla combinazione e rimozione dei delegati. Il titolo della sottosezione afferma che “i delegati sono immutabili” e che “nulla di loro può essere cambiato”. Nel prossimo paragrafo, però, parla di come usare costrutti x += y; dove y sono variabili di tipi di delegati compatibili. […]

Compilando i delegati multicast in C # – dovrei usare operatori o Action.Combine?

Leggendo la documentazione posso vedere che l’operatore + può essere usato per comporre / combinare delegati dello stesso tipo. Allo stesso modo posso vedere che posso rimuovere un delegato composto usando l’operatore – . Ho anche notato che il tipo di Action dispone di metodi statici Combine e Remove che possono essere utilizzati per concatenare […]

C #: crea un’azione nulla da fare sull’istanza della class

Ho una class in cui l’utente può passare un’azione (o meno). public class FooClass : BaseClass { public FooClass() : this((o) => ()) //This doesn’t work… { } public FooClass(Action myAction) : base(myAction) { } } Fondamentalmente, non posso passare nulla nella mia class base per l’ Action . Ma, allo stesso tempo, non voglio […]