2016-08-15 38 views
-1

我想创建一个方法作为给定我们可以将Dummy从全局命名空间移动到我自己的命名空间吗?

  • 在x和y而言,其中均为复数数学表达式的输入的数学表达式求值,x的
  • 输入是复数,
  • 输入y也是一个复数。

using Microsoft.CodeAnalysis.CSharp.Scripting; 
using Microsoft.CodeAnalysis.Scripting; 
using System; 
using System.Numerics; 
using System.Text.RegularExpressions; 

public class Dummy 
{ 
    public Complex x; 
    public Complex y; 
} 

namespace Simpler 
{ 
    static class Program 
    { 

     public static Complex Function(this string e, Complex x, Complex y) 
     { 
      Script<Complex> s = CSharpScript.Create<Complex>(e, globalsType: typeof(Dummy)); 

      Complex z = s.RunAsync(new Dummy { x = x, y = y }).Result.ReturnValue; 

      return z; 
     } 

     static void Main(string[] args) 
     { 
      Complex x = new Complex(1, 1); // x = 1 + i 
      Complex y = new Complex(0, 1); // y = i 

      //string e = "x*y"; // x*y = (1 + i)* i = i + i^2 = i - 1 = -1 + i 
      string e = "x/y"; // x/y = (1 + i)/ i = 1/i + 1 = -i + 1 = 1 - i 

      string lhs = Regex.Replace(e, "x", x.ToString()); 
      lhs = Regex.Replace(lhs, "y", y.ToString()); 

      Console.WriteLine($"{lhs} = {e.Function(x, y)}"); 


     } 
    } 
} 

问题

我们可以将Dummy从全局命名空间,以我自己的命名空间Simpler

+0

是的..你有没有尝试过吗? – Nico

回答

1

类只要复制到您的namepspace这样的:

namespace Simpler 
{ 

    public class Dummy 
    { 
     public Complex x; 
     public Complex y; 
    } 
} 

我建议把它叫做Dummy.cs或类似的东西另一个文件。完成之后,您应该可以从命名空间Simpler访问此类。

+0

globalsType:typeof(Dummy)为CSharpScript方法定义参数。参数名称是globalsType.You可以在[CSharpScript.cs](http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp.Scripting/CSharpScript.cs)下查找。在Csharp中,基本上可以使用这种表示法设置方法的特定参数。 –

相关问题