Jint에서 실행되는 스크립트가 네임 스페이스로 설정 한 기존 API에 액세스 할 수 있도록 허용하려고합니다. 그 말은 다른 네임 스페이스를 포함하여 API가 포함 된 단일 네임 스페이스를 갖고 있음을 의미합니다. 스크립트가 .Net 프레임 워크를 포함한 나머지 코드에 액세스하는 것을 허용하고 싶지 않습니다. 그들에게, 그러나 무례를 http://jint.codeplex.com/discussions/310772 을하지만 포럼은 매우 활성화 될 나타나지 않고 나는 내가 여기에 게시하고 빨리이 대답 할 수 있도록하고 싶습니다 : 특정 네임 스페이스를 Jint에 노출
는 이미 여기에 jint를 포럼에 게시 없었다 잘.A는 얼마 전, ThomasMaierhofer은 아마 여기를 해결하기 위해 수정할 수이 비슷한 달성 : http://jint.codeplex.com/discussions/211291
내 경험이 뇌에이 엔진에 API를 노출 정말 깔끔한 방법처럼 보인다, 그러나 나는 전에 이런 식으로 한 것을 본 적이 없다.
제 질문은 다음과 같습니다. 그렇다면 왜 전에 이렇게하지 않았습니까? 그리고 Jint 소스를 수정하지 않고도이 작업을 수행 할 수있는 방법이 있습니까? 새 버전이 출시되면 Jint .dll을 쉽게 업데이트 할 수 있습니까?
편집 : 내가 가진 현재의 API는 여러 기능을 가진 각각의 여러 클래스로 구성되어 있습니다. SetParameter를 사용하여 이러한 클래스의 특정 인스턴스를 절대적으로 노출시킬 수 있습니다. Jint에는 AllowClr 속성도 있습니다.이 속성을 사용하면 네임 스페이스를 완전히 정규화하여 스크립트에서 CLR에 액세스 할 수 있습니다. 이 값을 false로 설정하면 어떻게되는지 보여주는 예제 코드입니다. 출처 : 단지 특정 네임 스페이스가 아닌 다른 모든 것들에 대한 http://jint.codeplex.com/wikipage?title=Using%20.NET%20classes%20from%20scripts
string stringBuilder = @"
var sb = new System.Text.StringBuilder();
return sb.ToString();
";
var engine = new JintEngine();
engine.AllowClr = false;
engine.Run(stringBuilder); // throws a SecurityException
나는이 허용하고자
하지만 . 질문을 명확하게하기를 바랍니다.
도움을 주셔서 감사합니다.
샘.
P. 나는 VB.Net에서 일하고 있지만 C# 관련 답변은 괜찮습니다.
그러나 답변을 주셔서 감사합니다. 어떻게 작동하는지 오해가 아니라면 문제가 해결되지 않습니다. 나는 세부 사항을 추가하기 위해 질문을 편집 할 것이다. – SeriousSamP
나는이 질문에 대해 확장했다. – SeriousSamP