2009-05-19 4 views
4

COM 상호 운용성을 사용하여 COM 속성을 노출 할 수 없습니까? 모든 것이 방법 이어야만합니까?COM Interop의 .NET 속성?

이것이 사실이 아니라면 어떻게합니까?

답변

9

사실이 아닙니다.

나는 COM calling or using a .NET class에 관해 묻는 질문을 이해합니다.

this page에 따르면 관리되는 클래스의 메서드, 속성 및 필드를 COM 소비자에게 표시 할 수 있습니다.

COM에 노출하려는 모든 관리되는 형식, 메서드, 속성, 필드 및 이벤트는 공개이어야합니다. 형식에는 공용 기본 생성자가 있어야하며 이는 COM을 통해 호출 할 수있는 유일한 생성자입니다.

는? :이 일을합니까

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
[Guid("A1209192-723B-4325-8599-FB39D9F202D9")] 
public interface ITicklee 
{ 
    [DispId(1)] 
    void TickleMe(); 

    [DispId(2)] 
    int Count{get;} 
} 


[Guid("45715A3B-CA95-49f7-9889-A0022B31EF8A")] 
public class Elmo : ITicklee 
{ 
    // default ctor 
    public Elmo() {} 

    private int _tickleCount; 

    public int Count 
    { 
     get 
     { 
      return _tickleCount; 
     } 
    } 

    public void TickleMe() 
    { 
     _tickleCount++; 
    } 
} 
다음과 같을 수

VBScript를 테스트 클라이언트 :

Sub TestTickle() 

    WScript.echo("") 

    WScript.echo("Instantiating an Elmo ...") 
    dim elmo 
    set elmo = WScript.CreateObject("Ionic.Tests.Com.Elmo") 

    WScript.echo("Tickling...") 

    For i = 1 to 5 
     elmo.TickleMe() 
    Next 

    WScript.echo("") 
    c = elmo.Count 

    WScript.echo("Tickle Count = " & c) 

    ' one for the road' 
    elmo.TickleMe() 

End Sub 

call TestTickle()  ' ahem ' 
1

당신이 .NET으로 COM 개체의 속성을 노출 할 수 있다는 것을 의미하는 경우 interop을 사용하는 응용 프로그램, 그리고 COM 개체가 VB에서 만들어진 경우 올바른 것입니다. VB는 네이티브 형식에 대해 속성 LET을 사용하고 개체 형식에 대해 속성 SET를 사용합니다. .NET 응용 프로그램에서 COM 개체의 속성을 설정하려고하면 SET 사용하려고합니다. 기본 속성이 기본 VB 형식 인 경우이 작업은 실패합니다.

내가 아는 한, 속성보다는 메서드를 사용하는 것 외의 유일한 솔루션은 수동으로 IDL을 조작하는 것입니다.

-3

설명 : 당신은 당신이 낮아 명성 언급 할 수 때 짜증나에만

+0

동안 읽기 전용 속성을 사용할 수 있습니다 AFAIK, 의견과 질문에 대한 답변을 피해주십시오. http://stackoverflow.com/help/whats-reputation은 평판 이익 (및 손실)에 대한 정보를 제공 할 수 있습니다. – chrisb2244

+0

문법에 대한 Downvoted. 이 질문입니까? 성명? COM 개체에서 읽기 전용 속성 만 사용할 수 있는지 또는 실제로 COM 개체에서 읽기 전용 속성 만 사용할 수 있는지 묻는 중입니까? – sbrett