Come si crea un'azione in un ciclo? per spiegare (scusate è così lunga)come combinare più azioni <T> in una singola azione <T> in C#?
Ho il seguente:
public interface ISomeInterface {
void MethodOne();
void MethodTwo(string folder);
}
public class SomeFinder : ISomeInterface
{ // elided
}
e una classe che utilizza il sopra:
public Map Builder.BuildMap(Action<ISomeInterface> action,
string usedByISomeInterfaceMethods)
{
var finder = new SomeFinder();
action(finder);
}
mi può chiamare con uno di questi e funziona great:
var builder = new Builder();
var map = builder.BuildMap(z => z.MethodOne(), "IAnInterfaceName");
var map2 = builder(z =>
{
z.MethodOne();
z.MethodTwo("relativeFolderName");
}, "IAnotherInterfaceName");
Come è possibile creare la seconda implementazione a livello di codice? vale a dire,
List<string> folders = new { "folder1", "folder2", "folder3" };
folders.ForEach(folder =>
{
/* do something here to add current folder to an expression
so that at the end I end up with a single object that would
look like:
builder.BuildMap(z => {
z.MethodTwo("folder1");
z.MethodTwo("folder2");
z.MethodTwo("folder3");
}, "IYetAnotherInterfaceName");
*/
});
ho pensato ho bisogno di un
Expression<Action<ISomeInterface>> x
o qualcosa di simile, ma per la vita di me, io non sto vedendo come costruire quello che voglio. Ogni pensiero sarebbe molto apprezzato!
Grazie per la rapida risposta! Ci sto provando ora, ma sembra buono finora. – JohnKeller
Questo ha fatto il trucco, grazie! Un ottimo promemoria per pensare prima a soluzioni semplici! – JohnKeller
Questo è così bello. Non avevo davvero capito cosa fossero i delegati multicast fino a poco tempo fa. –