Comments (8)
Hi @NickJWilliams,
ClearScript does support enums, but you found a bug. This bug affects only nested types, and only when accessed from VBScript. You can work around it by exposing your nested type directly:
scriptEngine.AddHostType("test", GetType(test))
scriptEngine.AddHostType("Numbers", GetType(test.Numbers))
Unfortunately this means that your script code will have to use Numbers.one
instead of test.Numbers.one
for now. We'll post a fix shortly. Thanks for reporting this bug!
One more thing. ClearScript does not expose enums as integers. Its aim has always been to give script code full access to all the capabilities of exposed .NET objects, and since .NET enums are not integers, it wouldn't be correct to expose them as such. One consequence of this is that you must use is
to compare them instead of the equality operator.
Good luck!
from clearscript.
Glad I could help :-)
Just wondering how I can use the enum values in a bit wise scenario? e.g.
somefunc.test = Numbers.one + Numbers.two
Thanks
Nick
from clearscript.
@NickJWilliams Unfortunately ClearScript can neither override VBScript's operators nor expose .NET's. It provides the generic HostFunctions.flags
for combining bitwise enum members, but if that's not sufficient, you'll have to expose a helper class or some functions that perform these operations in managed code.
from clearscript.
Thanks, lastly should I be able to access Const's in my host objects/types?
from clearscript.
@NickJWilliams If the constant is a public member of an exposed class, structure, or module, it should be accessible from script code.
from clearscript.
Hi thanks for fixing my issue, how do I go about updating my project. I am currently referencing ClearScript via NuGet.
I am also having trouble creating new instances of objects from defined types.
e.g.
Dim obj
set obj = new test
I am getting
Class not defined: 'test'
Thanks
Nick
from clearscript.
Just to add to the above, I thought I would try using Microsoft.ClearScript.Windows.JScriptEngine
.
This appears to work as expected. But we need to use VBScript as other applications we are working with use VBScript and ideally we want to keep everything consistent.
Thanks
Nick
from clearscript.
Hi Nick,
We don't provide ClearScript binaries. You can try contacting the NuGet project owners or building ClearScript yourself (instructions here).
Unfortunately, unlike JScript, VBScript doesn't allow the host to override the new
keyword, but ClearScript provides a function for instantiating host types:
engine.Script.host = new HostFunctions();
engine.AddHostType(typeof(test));
engine.Execute(@"
set obj = host.newObj(test)
");
If you need to interface with legacy code that uses new
, you can create a VBScript wrapper class for your host class.
Good luck!
from clearscript.
Related Issues (20)
- ClearScriptV8.linux-x64.so not found in the Docker HOT 2
- ClearScriptV8.win-x86.dll and ClearScriptV8.win-x64.dll missing on Publish HOT 2
- Question: ScriptEngine.HostData HOT 4
- Question: try pattern from script HOT 2
- Behavior of the `MaxRuntimeHeapSize` property of `V8ScriptEngine` class has changed HOT 2
- Debugging ClearScript with Visual Studio Code HOT 1
- Control of the ClearScript Engine HOT 4
- "RangeError: Array buffer allocation failed" when Executing "new Uint8Array()" HOT 2
- Allow configuration to limit the number of max statements to be executed HOT 13
- How to change the local timezone used by the engine's date functions HOT 4
- VBScript will be discontinued, can clear script be a solution? HOT 2
- Problem with ArrayBuffer bounds checking HOT 4
- Issue with calling JavaScript functions defined as function from ClearScript in C# HOT 3
- [FR]: Expose V8's CompileFunction (Along with the Rest of v8::ScriptCompiler) HOT 5
- Feature Request: Add the Deno engine. HOT 5
- ReadOnly ScriptMember still writable according to getOwnPropertyDescriptor HOT 2
- Runtime support appears incorrect HOT 2
- License ambiguity between git repo and NuGet HOT 2
- Allow for AwaitDebugger but don't pause on first HOT 3
- VBScriptEngine: Changing object with AddHostObject doesn't work HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clearscript.