Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Script# code with string operations in standart C# .NET project

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:

MissingMethodException

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.

like image 352
Ivan Kochurkin Avatar asked Dec 01 '25 18:12

Ivan Kochurkin


1 Answers

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#.

like image 197
Tengiz Avatar answered Dec 03 '25 07:12

Tengiz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!