私は、Jurassic JavaScriptエンジンを介してJavaScriptに公開される.NETクラスを作成しようとしています。クラスはHTTP応答オブジェクトを表します。 HTTPレスポンスには同じ名前の複数のヘッダーがある可能性があるため、特定の名前のヘッダーのIEnumerableを返すメソッドを含めることにします。IEnumerableを返すメソッドを持つJavaScriptに.NETオブジェクトを公開することはできますか?
これは私がこれまで持っているものです:私はgetHeadersメソッドをテストする場合
public class JsResponseInstance : ObjectInstance
{
private IDictionary<string, IList<string>> _headers;
public JsResponseInstance(ObjectInstance prototype)
: base(prototype)
{
this.PopulateFunctions();
_headers = new Dictionary<string, IList<string>>();
}
[JSFunction(Name = "addHeader")]
public virtual void addHeader(string name, string value)
{
IList<string> vals;
bool exists = _headers.TryGetValue(name, out vals);
if (!exists)
{
vals = new List<string>();
_headers[name] = vals;
}
vals.Add(value);
}
[JSFunction(Name = "getHeaders")]
public virtual IList<string> getHeaders(string name)
{
IList<string> vals;
bool exists = _headers.TryGetValue(name, out vals);
if (!exists)
{
return new List<string>();
}
return vals;
}
}
は私がJavascriptExceptionを得る:Unsupported type: System.Collections.Generic.IList'1[System.String]
私はIListのからgetHeadersメソッドの戻り値の型を変更しようとしましたまた、オプションのIsEnumerableプロパティをメソッドを修飾するJSFunction属性に追加します。どちらの変更も違いをもたらさなかった、私はまだ同じ例外を見ていた。
JavaScriptに公開されている.NETクラスのメソッドからIEnumerableを返す方法はありますか?