c# - 如何确定 System.Object 是否为 System.Type

标签 c# wpf

我正在为 WPF 编写一个通用的 IValueConverter,但我在将值与特定类型进行比较时遇到了困难。

我的对象的构成看起来像这样

public interface IAwesome
{
    int AwesomeAmount { get; set; }
}

public class MyAwesomeClass : IAwesome
{
    public int AwesomeAmount { get; set; }
}

我的方法看起来像这样

public bool CompareToType(object value, Type type);

如果我有...

var mac = new MyAwesomeClass();
bool isAwesome = CompareToType(mac, typeof(IAwesome));

同样我可以写

var stream = new FileStream();
bool isStream = CompareToType(stream, typeof(Stream));

如何编写我的 CompareToType 方法来确定该类是实现接口(interface)还是继承自基础对象?

如果我遗漏了一些非常明显的东西,我深表歉意,但无论如何我都会很感激你的帮助:)

最佳答案

使用Type.IsAssignableFrom方法。

例子:

type.IsAssignableFrom(value.GetType());

关于c# - 如何确定 System.Object 是否为 System.Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728474/

相关文章:

c# - 计算文本文件中的行数

c# - 在 C# 应用程序中使用 SQL 的最简单方法?

c# - 使用WPF和MVVM的多选

wpf - 在 XAML : Stop an Event from Taking Place

wpf - 如何在不破坏自动化测试的情况下为 TabControl 定义 ControlTemplate?

c# - 我可以从另一个程序的内存中获取字符串吗?

c# - 在等待同一行代码时保持 UI 在主线程 webBrowser_DocumentCompleted 中响应

javascript - 清除浏览器后退按钮上的字段

c# - 如何在 Rider 中创建 XAML + CodeBehind 对?

c# - 如何让 MahApps CleanWindow 工作?