0

別のタイプ()に暗黙の演算子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);
}
4

1 に答える 1

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
}
于 2012-04-06T11:51:31.143 に答える