Creating a method that takes a generic method and its variadic parameters as arguments and call it i
I need a way to pass generic static methods and its argument to another method, and the static method inside this another method.
In C++, I can easily achieve this with variadic templates and
std::forward
:
But I don't know how to do this easily in C#;
Previously I just captured all the required arguments into a lambda, which calls the static method inside of it, and passed it as an single Action
.
But this breaks when I have non-capturable arguments such as Span<T>
.
And I don't want to use params object[]?
to box the arguments.
The only way I can think of is declaring the ActualCallFunc
one by one:
But not only this is cumbersome, it would not work if sometimes the parameter needs to use ref
.
Is there any nice way to solve this like in C++?9 Replies
C# has no variadic generic parameters
There is a source generator I see, written by @WhiteBlackGoose: https://github.com/WhiteBlackGoose/InductiveVariadics
A proposal has been made in 2015: https://github.com/dotnet/roslyn/issues/5058
Hmm, too bad it is not a thing.
Source generator approach looks interesting, but I think it's a bit overkill solution for my usecase
Hmm, I'll just declare these manually for now then
You could do some fucky-wucky stuff with delegates, if you really must
Hmm, I believe this
DynamicInvoke
also boxes the parameters, I would like to avoid that if possible
Thanks for suggesting, anywaysput your parameters in a struct
this kind of pattern in C# is a burden to maintain
did it pop up on your search engine?
ya
cool 😄