我有一个特定类型的对象(SpecialImage
),它将隐式运算符实现为另一个类型(Image
)。
SpecialImage
不派生自Image
。但是,通过运营商可以实现以下目标:
var someImage = new Image();
(SpecialImage)someImage;
我有一个具有属性的对象,我通过反射和Image
对象循环:
在尝试设置值之前,是否可以检查对象是否可投放到info.PropertyType
?
var someImage = new Image();
foreach(PropertyInfo info in someOjbect.GetType().GetProperties()) {
//info.PropertyType == typeof(SomeImage);
//Is it possible to check if the object is castable to
//info.PropertyType before trying to set the value?
info.SetValue(someObject, someImage, null);
}
答案 0 :(得分:1)
你可以试试这样的事情
如果我们有这些课程
class T1
{
}
class T2
{
public static implicit operator T1(T2 item) { return new T1(); }
}
我们可以使用
if(typeof(T2).GetMethods().Where (
t => t.IsStatic && t.IsSpecialName &&
t.ReturnType == typeof(T1) && t.Name=="op_Implicit").Any())
{
// do stuff
}