안녕하십니까..
저번에 나현호 선생님이 보여주신 VCLForm 으로 스마트클라이 언트
하는것을 보고 VCLForm 으로 만든것을 C#에서 만든 스마트클라이 언트에서
호출이 될수 있을까 하고 해 보았습니다.
그런대 ERROR 가 나서요..
DELPHI2005 에 코딩된 부분 입니다.
---------------------------------------------------------------------
unit USubject01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
System.ComponentModel, Borland.Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
constructor Create();
end;
var
Form1: TForm1;
implementation
{$R *.nfm}
constructor TForm1.Create;
begin
inherited Create(nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Form1 := nil;
end;
end.
---------------------------------------------------------------------
C#에서 호출 하는 부분은
---------------------------------------------------------------------
private void button1_Click(object sender, System.EventArgs e)
{
Assembly app = Assembly.LoadFrom("
http://localhost/Subject01.dll");
Type frmType = app.GetType(string.Format("USubject01.TForm1"));
if(frmType != null)
{
object frmObj = Activator.CreateInstance(frmType);
Form frmMain = frmObj as Form;
frmMain.Show();
}
else
{
MessageBox.Show("선택된 폼이 존재하지 않음");
}
}
---------------------------------------------------------------------
ERROR 난는 부분은 object frmObj = Activator.CreateInstance(frmType);
부분 입니다..
참고로 C#프로젝트에 참조에 Borland.delphi, Borland.vcl, Borland.vclrtl 을 추가 하였습니다.
--ERROR 내용 입니다.--
처리되지 않은 'System.Reflection.TargetInvocationException' 형식의 예외가 mscorlib.dll에서 발생했습니다.
추가 정보: 호출 대상이 예외를 Throw했습니다.
고수님의 고움을 부탁드립니다.