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

后端 未结 2 1110
一个人的身影
一个人的身影 2021-01-20 10:34

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:

相关标签:
2条回答
  • 2021-01-20 11:09

    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.

    0 讨论(0)
  • 2021-01-20 11:19

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

    0 讨论(0)
提交回复
热议问题