使用 getType() 函数 C# 进行强制转换

本文关键字:转换 getType 函数 使用 | 更新日期: 2023-09-27 18:34:00

有很多

解决方案,但它不起作用,正如我需要的那样。所以问题是:我有一个表单类:

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。界面控制台。

使用 getType() 函数 C# 进行强制转换

编译器是对的。由于您正在传递表单,因此不会隐式转换为 InterfaceConsole

您可以与运算符is检查表单是否为 InterfaceConsole 类型,然后强制转换它。或者直接将其投射到它并检查是否无效。

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

如果不了解场景,这些方法看起来都不好,因为您在此处的所有类之间创建依赖项。