2013-07-27 1 views
0

VB6 코드의 새로운 기능 :기능은 VB6에서 CreateObject를로 C#을 동등한

Dim oApplication As SiebelHTMLApplication 
Dim oBS As SiebelService 
Dim oPSIn As SiebelPropertySet 
Dim oPSOut As SiebelPropertySet 
Dim sActivityId As String 
Set oApplication = CreateObject("Siebel.Desktop_Integration_Application.1") 
If oApplication.IsReady Then 
    Set oBS = oApplication.GetService("Workflow Process Manager") 

C# 코드 : -

SiebelHTMLApplication sApp = new SiebelHTMLApplication(); 
SiebelService sService = new SiebelService(); 
SiebelPropertySet sPsIn = new SiebelPropertySet(); 
SiebelPropertySet sPsOut = new SiebelPropertySet(); 

가 그럼 난으로 C#을에 VB 코드의 라인 # 6을 변환하려고 : -

object instance = Activator.CreateInstance(Type.GetTypeFromProgID("Siebel.Desktop_Integration_Application.1")); 

하지만 같은 SiebelHTMLApplication에 인스턴스 개체를 캐스팅 할 수 없습니다 : -

sApp = (SiebelHTMLApplication)instance; 

설정 방법을 제안 할 수 있습니까?

답변

2

Type.GetTypeFromProgID는 com 인스턴스를 만들고 Type 개체는 만들지 않습니다.

당신은 Siebel.Desktop_Integration_Application 설명을 포함하는 어셈블리의 이름의 AssemblyName을 교체해야

object instance = Activator.CreateInstance(Type.GetType("Siebel.Desktop_Integration_Application, AssemblyName")); 

보십시오.

+0

답장을 보내 주셔서 감사합니다. 그런 다음 Type.GetTypeFromProgID를 사용하여 개체에서 형식으로 변경했습니다. 그것은 작동해야합니다 –

0

항상 Microsoft.VisualBasic을 가져 와서 CreateObject을 사용할 수 있습니까?

+0

고맙지 만 VB 코드를 최대한 많이 제거하고 싶습니다. –

+2

@PattadonBanthoonipit : Microsoft.VisualBasic 라이브러리는 VB 코드 (VB6 또는 .NET)가 아니며 프레임 워크의 다른 라이브러리입니다. – jmoreno

0

Vasiliy에 감사드립니다. 마지막으로 객체 유형을 변경하여 해결책을 얻었습니다. 그럼 지금 일하고있어 !!

var siebelDeskType = Activator.CreateInstance(Type.GetTypeFromProgID("Siebel.Desktop_Integration_Application.1")); 
      sApp = (SiebelHTMLApplication)siebelDeskType; 
관련 문제