如何确定是否系统.对象是System.Type
本文关键字:System Type 对象 系统 何确定 是否 | 更新日期: 2023-09-27 17:52:17
我正在为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方法来确定类是否实现接口或继承基对象?
如果我错过了一些非常明显的东西,我很抱歉,但我还是很感激你的帮助:)
使用类型。IsAssignableFrom方法。
的例子:
type.IsAssignableFrom(value.GetType());
也许您正在寻找is
?
var stream = new FileStream();
bool isStream = stream is Stream;
你也可以试试
isStream = typeOf(Stream).IsAssignableFrom(stream.GetType());
如果我理解正确,你在找这个:
if (mac is IAwesome) {}
或者:var t = mac as IAwesome;If (t != null) {}
bool isAwesome = mac is IAwesome;
检查一个类是否实现了一个接口:
var obj = new MyInteracedClass();
typeof(IMyInterface).IsAssignableFrom(obj.GetType());
or
typeof(IMyInterface).IsAssignableFrom(typeof(MyInteracedClass));
简单的实现方法是
public bool CompareToType(object obj, Type type)
{
return type != null
&& obj != null
&& type.IsAssignableFrom(obj.GetType());
}