如何加载从表单和界面扩展的 class?
How to load a class which extended from a form and interface?
我有几个表单 class 扩展了基于表单和我的自定义界面。
Interface InterfaceForms{
void InterfaceFunc1();
}
public partial class child1 : Form, InterfaceForms
{
public child1(){}
public InterfaceFunc1(){}
}
public partial class child2 : Form, InterfaceForms
{
public child2(){}
public InterfaceFunc1(){}
}
我将所有表单 classes 对象添加到如下列表中:
List<Form> lsf = new List<Form>();
然后我尝试加载我的表单 classes,如下所示:
var fr = from Form item in lsf
where item.Name == "child1"
select item;
Form frm = (Form)fr;
现在,我的问题是无法访问 InterfaceFunc1()。
你介意告诉我如何实现吗?请注意,frm 类型可能每次都不同(child1、child2 等),但它们都是从 Form 和 InterfaceForm 扩展而来的。
您需要将其转换为 InterfaceForms
:
var fr = from Form item in lsf
where item.Name == "child1"
select item;
Form frm = (Form)fr;
var iFaceFrm = frm as InterfaceForms;
if (iFaceFrm != null)
{
//use the iFaceFrm or frm here
}
编辑
你的 LINQ 语句的问题是声明类型,LINQ 语句的类型是推断出来的,所以你不要把它放在 select:
var fr = from item in lsf
where item.Name == "child1"
select item;
或者,如果您想按程序执行此操作:
var fr = lsf.Where(f => f.Name == "child1").FirstOrDefault();
我有几个表单 class 扩展了基于表单和我的自定义界面。
Interface InterfaceForms{
void InterfaceFunc1();
}
public partial class child1 : Form, InterfaceForms
{
public child1(){}
public InterfaceFunc1(){}
}
public partial class child2 : Form, InterfaceForms
{
public child2(){}
public InterfaceFunc1(){}
}
我将所有表单 classes 对象添加到如下列表中:
List<Form> lsf = new List<Form>();
然后我尝试加载我的表单 classes,如下所示:
var fr = from Form item in lsf
where item.Name == "child1"
select item;
Form frm = (Form)fr;
现在,我的问题是无法访问 InterfaceFunc1()。
你介意告诉我如何实现吗?请注意,frm 类型可能每次都不同(child1、child2 等),但它们都是从 Form 和 InterfaceForm 扩展而来的。
您需要将其转换为 InterfaceForms
:
var fr = from Form item in lsf
where item.Name == "child1"
select item;
Form frm = (Form)fr;
var iFaceFrm = frm as InterfaceForms;
if (iFaceFrm != null)
{
//use the iFaceFrm or frm here
}
编辑
你的 LINQ 语句的问题是声明类型,LINQ 语句的类型是推断出来的,所以你不要把它放在 select:
var fr = from item in lsf
where item.Name == "child1"
select item;
或者,如果您想按程序执行此操作:
var fr = lsf.Where(f => f.Name == "child1").FirstOrDefault();