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

主宰稳场 提交于 2019-12-01 23:16:11

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

I found solution!

My sequence of actions:

  1. Create Split method of string splitting in any Script# class.

  2. Define conditional compilation symbol DOTNET in your .NET project.

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!