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 found solution!
My sequence of actions:
Create Split
method of string splitting in any Script# class.
Define conditional compilation symbol DOTNET in your .NET project.
Add As Link file with Split
method from Script# to .NET project and also add as link another necessary dependent files.
public static string[] Split(string str, string separator)
{
string[] result;
#if DOTNET
result = str.Split(new string[] { separator }, System.StringSplitOptions.None);
#else
result = str.Split(separator);
#endif
return result;
}
After that appropriate code will be selected dependent on DOTNET symbol, which defined only in .NET project. Other similar methods, not only with strings, can be rewritten in the same way.
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#.