Tôi là newbie in rhino.Làm cách nào để bật 'cho ... trong' NativeJavaObject của tôi trong Rhino?
Hiện tại, tôi đang sử dụng khung công tác Rhino 1.7R thông qua .NET 4 và IKVM.NET. Tôi đã tiếp xúc với một số lớp được bọc thực thi NativeJavaObject sử dụng API setWrapFractory().
public class InterceptNativeObject : NativeJavaObject
{
public InterceptNativeObject()
{
}
public override Object get(String name, Scriptable start)
{
Object res = base.get(name, start);
if (res is NativeJavaMethod)
{
NativeJavaMethod method = (NativeJavaMethod)res;
return new RhinoMethodWrapFunction(method);
}
if (res == org.mozilla.javascript.UniqueTag.NOT_FOUND &&
base.javaObject is IPropertBox && base.javaObject != null)
{
object ret = ((IPropertBox)base.javaObject)._x__GetPropertyValue(name);
return Utils.ConvertCLRValueToJavaValue(ret);
}
return res;
}
.....
}
Bây giờ, tôi có thể truy cập tất cả các phương thức và thuộc tính .NET như tôi muốn.
Vấn đề hiện tại của tôi là hỗ trợ 'cho ... trong' các lớp NativeJavaObject của tôi. Khi tôi đánh giá
'for(var prop in myClass){printf(prop);};' ,
nó trả về lỗi 'không' trong 'cuộc gọi không phải đối tượng'.
Có vẻ như) chức năng ('get' cố gắng tìm kiếm một đối tượng của '_ iterator _', nhưng nó dẫn đến 'không tìm thấy' tại get. Vì vậy, nó kết thúc với ngoại lệ. . Cho đến nay, tôi đã cố gắng
- thêm java.util.Iterator
- this.getIds return() GetEnumrator();
Không có tác phẩm nào.
Làm cách nào tôi có thể cho phép thuộc tính liệt kê quyền truy cập cho Wrapped NativeJavaObject của tôi? Giá trị lợi nhuận kỳ vọng của Rhino là '_ iterator _' để bật 'cho ... trong'?
Cảm ơn trước!
Cảm ơn bạn rất nhiều. "__iterator___" đang tìm kiếm một hàm để xử lý chứ không phải đối tượng. Tôi cũng sẽ thử với setLanguageVersion (170). Cảm ơn bạn một lần nữa vì đã cung cấp thông tin rất hữu ích! –
Cuối cùng tôi đã lặp lại NativeJavaObject bằng cách tạo lớp Iterator là 'ScriptableObject'. Bây giờ nó chạy 'for (var a in document) {}' và 'if (' location 'trong cửa sổ) {}'. Cám ơn bạn một lần nữa! –
@Yone, bạn được chào đón. Chúc mừng kịch bản. –