问题描述
您好试图在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。