我有两个不相关的类:一个不是从另一个派生的。 这些类没有实现IConvertible。这就是为什么This answer不起作用。如何确定一个对象是否可以转换为不同类型,不带IConvertible
幸运的是,有一个从一个类到另一个类的隐式类运算符。
示例:考虑 - System.Data.Entity.DbSet - System.Data.Entity.DbSet。
隐式类型转换操作符:
public static implicit operator DbSet (DbSet<TEntity> entry)
以下工作:
DbSet<MyClass> x = new DbSet<MyClass>();
DbSet y = (DbSet) x; // ok, x properly cast to y
下不起作用:
object x = new DbSet<MyClass>();
object y1 = x as DbSet; // y1 is null, because not derived from DbSet
object y2 = (DbSet) x; // throws InvalidCastException
所以是可以检查一个对象是否可以投掷到另一个对象而不抛出异常?
这工作。我不知道隐式和显式运算符有预定义的名称。我现在要做的就是创建扩展函数object.TryCast。谢谢李! –