2016-08-15 84 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中,基本上可以使用這種表示法設置方法的特定參數。 –