使用getType()函数转换C#

时间:2014-12-12 07:48:16

标签: c# interface casting

有很多解决方案,但它不起作用,因为我需要。所以问题是: 我有一个表单类:

public partial class Form1 : Form , InterfaceConsole
  { 
    Imperx cam;

    public Form1()
    {
        InitializeComponent();
        cam = new Imperx(this);

    }
         ...
  }

我有自己的名为Imperx的课程:

class Imperx
  {
     private InterfaceConsole imperx_Form;
     private Form form;

     public Imperx(Form form){
         this.form = form;
         imperx_Form = (?????)form;
     }

所以,我想将我的表单变量转换为在Form1类中实现的接口,但我想在不转换为Form1的情况下执行此操作?据我所知,使用form.getType()函数对我很有用,但它说不能将System.type隐含到 my_namespace .InterfaceConsole。

1 个答案:

答案 0 :(得分:0)

编译器是对的。由于您传递的是表单,因此没有隐式转换为InterfaceConsole

您可以与运营商is核实表单是否为InterfaceConsole类型,然后进行投射。或直接将其投射到它并检查是否无效。

您可以通过传递Form1类型而不是Form类型来修复Imperx,然后隐式转换将可用。

如果不知道这个场景,这些方法看起来都不好,因为你在这里创建了所有类之间的依赖关系。