C# Class Library use in script

Programming/C,CPP,CS 2016. 4. 5. 16:58 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

C# Class Library use in script




C# Class Library



namespace ClassLibrary2

{

    // Interface declaration.

    public interface ICalculator

    {

        int Add(int Number1, int Number2);

    };

    [ProgId("Test.SimpleCalc")]

    public class SimpleCalc : ICalculator

    {

        public int Add(int Number1, int Number2)

        {

            return Number1 + Number2;

        }

    }

}





이런 형태 일때

JavaScript 에서 부르는 방법



JavaScript 에서는 주로 


요런 형태로 DLL 을 로드한다.


<object name="Class1" id="Class1" classid="CLSID:*-*-*-*" width="0" height="0"></object>


일단 임의의 CLSID 를 만들어낸다


Visual Studio [도구] [GUID 만들기] 로 GUID 를 하나 만들어 낸다.



{3963CDD9-1079-463A-BCDA-0182D296C9B6}


namespace ClassLibrary2

{

    // Interface declaration.

    public interface ICalculator

    {

        int Add(int Number1, int Number2);

    };

    [ProgId("Test.SimpleCalc")]

    [Guid("3963CDD9-1079-463A-BCDA-0182D296C9B6")]

    public class SimpleCalc : ICalculator

    {

        public int Add(int Number1, int Number2)

        {

            return Number1 + Number2;

        }

    }

}



객체에 GUID 를 설정한다.




그다음 regasm 으로 등록한다.

등록할때 /codebase 옵션을 붙여야한다.

codebase 옵션을 붙이려면 어셈블리 서명이 필요하다.


어셈블리 서명은

Properties

[서명]

[어셈블리 서명] 에서 

새로만들기로 편한대로 만들면된다

키 파일 이름, 암호 없음







그다음 html 에서

<object name="Class1" id="Class1" classid="CLSID:3963CDD9-1079-463A-BCDA-0182D296C9B6" width="0" height="0"></object>

    <script>
        function TestAdd() {
            var ctrl = document.getElementById("Class1");
            ctrl.Add(13,4);
        }
    </script>





실행하면 잘 된다.