Jint: ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Œ clr์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 09์›” 03์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sebastienros/jint

Engine.cs์—์„œ:

if (Options.IsClrAllowed())
    {
        Global.FastAddProperty("System", new NamespaceReference(this, "System"), false, false, false);
        Global.FastAddProperty("importNamespace", new ClrFunctionInstance(this, (thisObj, arguments) =>
        {
            return new NamespaceReference(this, TypeConverter.ToString(arguments.At(0)));}), false, false, false);
        }
    }

๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ์„ ์ œ๊ฑฐํ•˜๋ฉด ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„ ์‹ค์ œ๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ์ง€์ • CLR ํ˜•์‹์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ๋Š” ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ API๋ฅผ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋Š” ์ „์ฒด ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์— ์ข‹์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ๊ณ ๋กœ ๋”์ฐํ•œ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋ด…๋‹ˆ๋‹ค.

์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ํŠน์ • .Net ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ/๋˜๋Š” ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” AllowAssembly ๋˜๋Š” AllowClass API๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜„์žฌ CLR์„ ํ—ˆ์šฉํ•œ ๋‹ค์Œ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์„ค์ •์„ ํ•ด์ œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

var e =  new Jint.Engine(options =>
{
    options.AllowClr(typeof(Foo.Class1).Assembly);
});
e.Global.Properties.Remove("System");

์šฐ๋ ค๋ฅผ ์ดํ•ดํ•˜์ง€๋งŒ ๋™์‹œ์— AllowClr ์ด(๊ฐ€) ์˜ตํŠธ์ธ์ด๋ฉฐ ์ด ํ†ตํ™”์˜ ๋Œ€๋ถ€๋ถ„์˜ ์šฉ๋„์— ๋Œ€ํ•ด System ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ์…จ๋‹ค๋‹ˆ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ๋Š” ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ API๋ฅผ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋Š” ์ „์ฒด ์‹œ์Šคํ…œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์— ์ข‹์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ๊ณ ๋กœ ๋”์ฐํ•œ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋ด…๋‹ˆ๋‹ค.

์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ํŠน์ • .Net ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ/๋˜๋Š” ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” AllowAssembly ๋˜๋Š” AllowClass API๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

christianrondeau picture christianrondeau  ยท  10์ฝ”๋ฉ˜ํŠธ

Jugolo picture Jugolo  ยท  13์ฝ”๋ฉ˜ํŠธ

asdfgasdfsafgsdfa picture asdfgasdfsafgsdfa  ยท  17์ฝ”๋ฉ˜ํŠธ

smadurange picture smadurange  ยท  3์ฝ”๋ฉ˜ํŠธ

tricuongle picture tricuongle  ยท  5์ฝ”๋ฉ˜ํŠธ