gpt4 book ai didi

c# - 将 Type 变量的值强制为特殊基类型

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:58 25 4
gpt4 key购买 nike

我通过强制模块实现一个抽象类来实现我的模块系统,该抽象类包含将由基础应用程序调用的强制方法。现在我想为每个模块实现一个配置表单。我考虑过将表单类型作为我的模块骨架类的属性返回:

public abstract class Module
{
public abstract Type ConfigurationForm { get; }
}

在显示配置表单时,我简单地实例化了一个这种类型的Form,并调用了Show()方法。

问题是,我想强制模块返回一个 Type,它是 System.Windows.Forms.Form 的子类,否则调用会失败。执行此操作的正确方法是什么?

我考虑过将 ConfigurationForm 属性封装在另一个属性中,该属性检查它是否继承自 Form,但我认为这不是实现此目的的干净方法。

最佳答案

您可以使用泛型类型参数来完成此操作

public abstract class Module<F> where F : Form
{
public Type ConfigurationForm { get { return typeof(F); } }
}

但实际上这可能更有意义:

public abstract class Module
{
public abstract Form CreateConfigurationForm();
}

编辑:使用第二个选项的优点是您可以编写代码来使用您的 Module 类,而不必具体知道您正在处理哪种类型的模块

关于c# - 将 Type 变量的值强制为特殊基类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com