C# 我们可以将虚拟名称从全局名称空间移动到我自己的名称空间吗?

C# 我们可以将虚拟名称从全局名称空间移动到我自己的名称空间吗?,c#,C#,我想创建一个方法,作为给定对象的数学表达式求值器 输入以x和y表示的数学表达式,其中都是复数 输入x,它是一个复数 y的输入,也是一个复数 使用Microsoft.CodeAnalysis.CSharp.Scripting; 使用Microsoft.CodeAnalysis.Scripting; 使用制度; 使用系统数字; 使用System.Text.RegularExpressions; 公共类虚拟 { 公共综合体x; 公共综合体y; } 名称空间更简单 { 静态类程序 { 公共静态复数

我想创建一个方法,作为给定对象的数学表达式求值器

  • 输入以x和y表示的数学表达式,其中都是复数
  • 输入x,它是一个复数
  • y的输入,也是一个复数

使用Microsoft.CodeAnalysis.CSharp.Scripting;
使用Microsoft.CodeAnalysis.Scripting;
使用制度;
使用系统数字;
使用System.Text.RegularExpressions;
公共类虚拟
{
公共综合体x;
公共综合体y;
}
名称空间更简单
{
静态类程序
{
公共静态复数函数(此字符串为e,复数为x,复数为y)
{
scripts=CSharpScript.Create(e,globalsType:typeof(Dummy));
复数z=s.RunAsync(新的伪{x=x,y=y});
返回z;
}
静态void Main(字符串[]参数)
{
复数x=新复数(1,1);//x=1+i
复数y=新复数(0,1);//y=i
//字符串e=“x*y”;//x*y=(1+i)*i=i+i^2=i-1=-1+i
字符串e=“x/y”;//x/y=(1+i)/i=1/i+1=-i+1=1-i
字符串lhs=Regex.Replace(e,“x”,x.ToString());
lhs=Regex.Replace(lhs,“y”,y.ToString());
Console.WriteLine($“{lhs}={e.Function(x,y)}”);
}
}
}
问题
我们可以将
Dummy
从全局名称空间移动到我自己的名称空间
Simpler

只需将类复制到您的名称空间中,如下所示:

namespace Simpler
{

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

我建议将它放在另一个名为Dummy.cs或类似文件中。完成后,您应该可以从名称空间更简单地访问此类。

Yes。。您试过了吗?globalsType:typeof(Dummy)为CSharpScript方法定义了一个参数。参数名称为globalsType。您可以在下查找。在Csharp中,基本上可以通过使用此符号设置方法来设置特定参数。
namespace Simpler
{

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