C# 使用反射计算空强制转换?
给定空强制转换:C# 使用反射计算空强制转换?,c#,reflection,null-cast,C#,Reflection,Null Cast,给定空强制转换: 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
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 ) {...}
(其中,someInstance
对于静态方法是null
,而someType
是具有MyMethod
方法的类型)简短回答:否
我猜你得到了这样的东西:
class Foo : Bar{}
既然你有:
object MyMethod(param object[] values);
这是不可能的。您可以使用空对象模式来实现这一点:
class Foo : Bar
{
public static readonly Foo Null=new Foo();
}
然后用Foo.Null而不是Null调用。然后,MyMethod可以检查静态实例并相应地执行操作:
object MyMethod(param object[] values
{
if(values[0]==Foo.Null) ......
}
你到底是什么意思?你到底想用什么?用什么确切的方法?感谢空对象模式-另一个想法。
object MyMethod(param object[] values
{
if(values[0]==Foo.Null) ......
}