C#比较多种类型

标签 c# typeof

我有以下遗留代码:

if (isOnMainWindow
    || (win.GetType() != typeof(winInputBox)
    && win.GetType() != typeof(winMessage)
    && win.GetType() != typeof(winMsgBox)
    && win.GetType() != typeof(winAbout))
    ApplicationCommands.Close.Execute(null, win);

这看起来很糟糕。有没有办法像我这样比较多种类型的对象?

最佳答案

或者,如果您可以修改类,则创建一个虚拟接口(interface),例如:

public interface IShouldNotClose
{
}

将界面定义为每个窗口的一部分,然后您的检查就变成了

if (isOnMainWindow
    || !(win is IShouldNotClose))
    ApplicationCommands.Close.Execute(null, win);

关于C#比较多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56081218/

相关文章:

c# - 不声明类型的编写方法

javascript - 为什么 undefined 在 JavaScript 中不可写?

javascript - javascript函数的typeof是在声明函数之前定义的吗?

Angular4 - 检查嵌套对象项是否为空

c# - 当继承类型具有不同的类型参数时,声明泛型基类型的变量

c# - 编译前迭代所有场景

c# - 将 Wpf 的数据网格绑定(bind)到数据库

c# - 为什么在 C# 中,在控件组合框中,我无法更改属性 SelectedItem?

字符串值函数上的 JavaScript typeof 运算符返回 "function"而不是 "string"

javascript - typeof 关键字的行为