鑑於空鑄:用反射評估空投射?
var result = MyMethod((Foo) null);
是否有可能使用與反射的方法內這些額外的信息?
編輯:
方法的簽名是這樣的:
object MyMethod(params object[] args)
{
// here I would like to see that args[0] is (was) of type Foo
}
鑑於空鑄:用反射評估空投射?
var result = MyMethod((Foo) null);
是否有可能使用與反射的方法內這些額外的信息?
編輯:
方法的簽名是這樣的:
object MyMethod(params object[] args)
{
// here I would like to see that args[0] is (was) of type Foo
}
啊...你...編輯
我懷疑你會得到最接近的是仿製藥:
object MyMethod<T>(params T[] args) {...}
(並看看typeof(T)
)
但是,假設所有args
是相同的。除此之外;沒有。每一個null都是相同的(拋開Nullable<T>
),並且你不能告訴變量類型。
原件回覆:
你的意思是重載?
object result = someType.GetMethod("MyMethod",
new Type[] { typeof(Foo) })
.Invoke(someInstance, new object[] { null });
(其中someInstance
是null
靜態方法,並someType
是具有MyMethod
方法Type
)
簡短的回答:沒有
我猜你有這樣的事情:
class Foo : Bar{}
既然您得到了:
object MyMethod(param object[] values);
沒有辦法做到這一點。你可以使用空對象模式來實現:
class Foo : Bar
{
public static readonly Foo Null=new Foo();
}
,然後用Foo.Null代替空調用。您的MyMethod然後可以檢查靜態實例並採取相應的措施:
object MyMethod(param object[] values
{
if(values[0]==Foo.Null) ......
}
您的確切含義是什麼意思? – 2009-05-20 12:21:32
你想要使用什麼和確切的方法? – 2009-05-20 12:21:42