C# 尝试获取引用的vb.net dll以在c中显示对话框#

C# 尝试获取引用的vb.net dll以在c中显示对话框#,c#,vb.net,dll,showdialog,C#,Vb.net,Dll,Showdialog,我的c#项目中引用了一个遗留的vb.net dll。 调用各种方法没有问题,但我需要能够显示dll中的表单,以便用户可以从数据库响应中选择正确的行 Assembly assembly = Assembly.LoadFile("FMSValidation.dll"); 不会产生错误,但 Type type = assembly.GetType (FMSValidation.CreditorDetails ); 告诉我“CreditorDetails”是一个类型,在上下文中无效。程序集。G

我的c#项目中引用了一个遗留的vb.net dll。 调用各种方法没有问题,但我需要能够显示dll中的表单,以便用户可以从数据库响应中选择正确的行

Assembly assembly = Assembly.LoadFile("FMSValidation.dll");
不会产生错误,但

Type   type  = assembly.GetType (FMSValidation.CreditorDetails );

告诉我“CreditorDetails”是一个类型,在上下文中无效。

程序集。GetType
不接受实际类型。它接受一个字符串:

Type type = assembly.GetType("FMSValidation.CreditorDetails");
如果
assembly.GetType
能够接受一个类型,那是没有意义的,因为此时您已经有了一个类型

拥有类型后,可以使用activator类创建该类型的实例:

var form = (System.Windows.Forms.Form)Activator.CreateInstance(type);
form.ShowDialog();
如果
CreditorDetails
需要任何构造函数参数,请使用接受参数数组的
CreateInstance
重载



编译器似乎知道fmsvalization.CreditorDetails是一种类型,所以我想知道为什么要动态加载程序集并尝试使用GetType。您应该能够添加对程序集的引用,并像使用任何其他类型一样使用其类型,如
new fmsvalization.CreditorDetails()
程序集。GetType
不接受实际类型。它接受一个字符串:

Type type = assembly.GetType("FMSValidation.CreditorDetails");
如果
assembly.GetType
能够接受一个类型,那是没有意义的,因为此时您已经有了一个类型

拥有类型后,可以使用activator类创建该类型的实例:

var form = (System.Windows.Forms.Form)Activator.CreateInstance(type);
form.ShowDialog();
如果
CreditorDetails
需要任何构造函数参数,请使用接受参数数组的
CreateInstance
重载



编译器似乎知道fmsvalization.CreditorDetails是一种类型,所以我想知道为什么要动态加载程序集并尝试使用GetType。您应该能够添加对程序集的引用,并像使用任何其他类型一样使用其类型,如
new fmsvalization.CreditorDetails()
程序集。GetType
不接受实际类型。它接受一个字符串:

Type type = assembly.GetType("FMSValidation.CreditorDetails");
如果
assembly.GetType
能够接受一个类型,那是没有意义的,因为此时您已经有了一个类型

拥有类型后,可以使用activator类创建该类型的实例:

var form = (System.Windows.Forms.Form)Activator.CreateInstance(type);
form.ShowDialog();
如果
CreditorDetails
需要任何构造函数参数,请使用接受参数数组的
CreateInstance
重载



编译器似乎知道fmsvalization.CreditorDetails是一种类型,所以我想知道为什么要动态加载程序集并尝试使用GetType。您应该能够添加对程序集的引用,并像使用任何其他类型一样使用其类型,如
new fmsvalization.CreditorDetails()
程序集。GetType
不接受实际类型。它接受一个字符串:

Type type = assembly.GetType("FMSValidation.CreditorDetails");
如果
assembly.GetType
能够接受一个类型,那是没有意义的,因为此时您已经有了一个类型

拥有类型后,可以使用activator类创建该类型的实例:

var form = (System.Windows.Forms.Form)Activator.CreateInstance(type);
form.ShowDialog();
如果
CreditorDetails
需要任何构造函数参数,请使用接受参数数组的
CreateInstance
重载



编译器似乎知道fmsvalization.CreditorDetails是一种类型,所以我想知道为什么要动态加载程序集并尝试使用GetType。您应该能够添加对程序集的引用,并像使用任何其他类型一样使用其类型,如
新FMSValidation.CreditorDetails()
FMSValidation.CreditorDetails
是一个类型,但它不是实际的
类型
对象。如果您想要一个实际的类型对象,并且可以在源代码中写入类型的名称(即,它不是字符串变量或其他形式),那么您将使用
typeof(fmsvalization.CreditorDetails)
而不是
assembly.GetType

fmsvalization.CreditorDetails
是一种类型,但它不是实际的
类型
对象。如果您想要一个实际的类型对象,并且可以在源代码中写入类型的名称(即,它不是字符串变量或其他形式),那么您将使用
typeof(fmsvalization.CreditorDetails)
而不是
assembly.GetType

fmsvalization.CreditorDetails
是一种类型,但它不是实际的
类型
对象。如果您想要一个实际的类型对象,并且可以在源代码中写入类型的名称(即,它不是字符串变量或其他形式),那么您将使用
typeof(fmsvalization.CreditorDetails)
而不是
assembly.GetType

fmsvalization.CreditorDetails
是一种类型,但它不是实际的
类型
对象。如果您想要一个实际的类型对象,并且可以在源代码中写入类型的名称(即,它不是字符串变量或其他形式),那么您可以使用
typeof(fmsvalization.CreditorDetails)
而不是
assembly.GetType

我可以,但我正在尝试让dll启动一个窗口,它似乎不愿意这样做。这样做不会导致错误,但我不能使用“LoadFile”,因为我实际上不知道dll在哪里(它很复杂)。有没有办法让“showdialog”与该类型一起工作?我可以,但我正在尝试让dll启动一个窗口,它似乎不愿意这样做。这样做不会导致错误,但我不能使用“LoadFile”,因为我实际上不知道dll在哪里(很复杂)。有没有办法让“showdialog”与该类型一起工作?我可以,但我正在尝试让dll启动一个窗口,它似乎不愿意这样做。这样做不会导致错误,但我不能使用“LoadFile”,因为我实际上不知道dll在哪里(很复杂)。有没有办法让“showdialog”与该类型一起工作?我可以,但我是tr