I added reference of Script# to my standart console application. After that I was trying to invoke some method from there but was getting the following error:

I suppose it happened on the following line:
string[] lines = s.Split(';');
My assumption is that usual mscorlib library has not method public string[] Split(char separator), but has public string[] Split(params char[] separator)
Is it possible to write valid code with such string operations both for a Script# project and for a standart C# .NET project? Due to this problem I have to write duplicate code for both projects with minimal difference.
P.S. I tried to use assemblty binding redirects, as discussed in this SO question, but it didn't help me.
EDIT:
The only solution to me seems to be the extension methods. You can define extension method Split on top of Script#'s String type similar to the standard .NET String.Split, i.e. accepting params char[]. And only then you can use the same code.
string[] lines = s.Split(new char[] { ';' });
Alternatively, define extension on top of standard String type, in case Script# is strict on extensions. But I think should not be a problem since extension method is just a static method.
OLD ANSWER: After realizing that Script# does not accept params char[], below answer became incorrect:
You are invoking s.Split by passing char to it. However, this method accepts params char[]. Although C# compiler allows you to pass char to Split, it later compiles it into passing char[]. So, if you want to have the same code working for both Script# and C#, change your code to the following way:
string[] lines = s.Split(new char[] { ';' });
This will work for both Script# and C#.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With