Start a new topic

Class Indexers Compiled To JavaScript Syntax Issue

This is a simple class that uses an indexer to set values:

[Js(Name = "Object", Extern = true)]
 public class Tester
     [Js(Name = "")]
     public extern dynamic this[string key] { get; set; }



When using in C# code:

 Tester test = new Tester();
 test["tst1"] = "Hello";



It gets compiled in JavaScript as:


 var test = new Object();
 test.("tst1", "Hello");


Instead of something like it should:


var test = new Object();
test["tst1"] = "Hello";

Either need to know what to make JsName for indexer or just remove JsName on the indexer definition... What do you think?

JsDictionary and mainly JsInterface are designed for stronigly typed JS object wrapping:

For example DOM PropertyDescriptorMap is defined like this:

public class PropertyDescriptorMap : JsInterface


  public extern new PropertyDescriptor this[string s] { get; set; }


Also their use is very convenient thanks to C# 6 for collection initializers.

Login or Signup to post a comment