Firma del método delegado con asignación de objeto y valor
Estoy tratando de hacer una extensión de IEnumerable similar a la que se muestra en https://stackoverflow.com/questions/11190324/using-linqs-zip-with-a-closure-that-doesnt-return-a-value por @Hakakou, sin embargo, estoy tratando de modificarla para ejecutar un método del primer valor, con el segundo valor como parámetro.
Por ejemplo:
“`C#
public class MyObject {
private int myInt;
public MyObject(int a){
myInt = a;
}
public void addToFloat(int b){
myInt += b;
}
}
List<myobject> objList = new List<myobject> {new MyObject(5), new MyObject(8)};
List<int> intList = new List<int> {3, 1};
objList.MyExtension(intList, addToFloat)
// Ahora ambos MyObjects deberían tener myInt configurado en 8 y 9 respectivamente
“`
Sin embargo, no estoy seguro de cómo ‘separar’ un método del objeto y guardar su firma, luego ser capaz de aplicarlo a cada instancia del objeto con un valor dado.
davy.ai
Para lograr esto, puedes crear un delegado que encapsule la firma del método que deseas aplicar a los objetos. Luego, en el método de extensión, puedes recorrer cada objeto e invocar el delegado pasando el segundo valor como parámetro. Aquí tienes un ejemplo de cómo se puede hacer:
“`C# MyExtension (this IEnumerable source, IEnumerable other, Action<t, int=””> action) { (i => {
public static class EnumerableExtensions {
public static IEnumerable
var actionDelegate = new Action
foreach(var item in source) {
action(item, i);
}
});
}
}
En este ejemplo, pasamos una función lambda que llama al método
addToFloat
de cada instancia deMyObject
pasando el valor int como parámetro.</t,></t,>