静态类JINT中的C#非静态类

问题描述

您好试图在JINT中使用的静态类中创建一个类,但是当它被引用时出现错误

C#代码


namespace Hi {
    public static class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

但是当我尝试用JavaScript制作一个新的时,我从JINT收到错误消息“该对象不能用作构造函数

var k = new Hi.Ok.Wowa()

我这样做正确吗?如何设置C#以便能够通过JINT在JavaScript中使用以上代码

顺便说一句,如果不是“ Ok”是一个静态类,而是一个命名空间,它可以工作,但是我希望将其作为一个类,因为我也想在其中包含静态方法

解决方法

您不能在静态类(ReadThis)中使用非静态类,但如果在第一类中删除(静态)

  namespace Hi {
    public class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

可以说这并没有多大区别,因为(静态)仅使您的类的子类别必须使用(静态)。 但是,如果您希望无法在变量上构建类,则可以使用abstract(ReadThis

namespace Hi {
    public abstract class Ok {
        public class Wowa {
            public Wowa(){}
        }
    }
}

Main()
{
    Ok k = new Ok();//Error
}
,

想象一下你有这个:

namespace Hi
{
  public static class Ok
  {
    public class Wowa
    {
         public Wowa() { }
         public static string MyStaticMethod() => "Hello from 'Static Method'";
         public string MyNormalMethod() => "Hello from 'Normal Method'";
    }
  }
}

可以通过创建非静态类Wowa来使用它,然后调用该实例的MyNormalMethod(只能调用非静态 >该类实例中的方法。

 Hi.Ok.Wowa wowa = new Hi.Ok.Wowa();
 wowa.MyNormalMethod();     

无需创建Wowa的任何实例,您就可以在其中调用 static 方法,如下所示:

Hi.Ok.Wowa.MyStaticMethod();

最后,您可以看到工作代码here