2016-08-15 2 views
-1

Я хочу создать метод в качестве выражения математики оценщика для данногоМожем ли мы переместить Dummy из глобального пространства имен в мое собственное пространство имен?

  • ввода выражения математической точки х и у, где являются комплексными числами,
  • входа х, который представляет собой комплексное число,
  • ввод 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 или что-то подобное. После того, как вы сделали это, у вас должен быть доступ к этому классу из вашего прошивки Namespace Simpler.

+0

globalsType: typeof (Dummy) определяет параметр для метода CSharpScript. Имя параметра - globalsType. Вы можете посмотреть это под [CSharpScript.cs] (http://source.roslyn.io/#Microsoft.CodeAnalysis.CSharp.Scripting/CSharpScript.cs). В Csharp вы в принципе можете установить определенные параметры для методов с настройкой их с помощью этих обозначений. –

Смежные вопросы