标签: reflection

什么可能导致java.lang.reflect.InvocationTargetException?

好吧,我试图理解和阅读可能导致它的原因,但我无法得到它:

我在我的代码中有这个地方:

 try{
 ..
 m.invoke(testObject);
 ..
 } catch(AssertionError e){
 ...
 } catch(Exception e){
 ..
 }
Run Code Online (Sandbox Code Playgroud)

事实是,当它试图调用某个方法时,它会抛出 InvocationTargetException而不是其他预期的异常(具体而言ArrayIndexOutOfBoundsException).因为我实际上知道调用了什么方法,所以我直接使用了这个方法代码,并为假设要抛出的行添加了一个try-catch块 ArrayIndexOutOfBoundsException,它确实ArrayIndexOutOfBoundsException按预期抛出.然而,当它上升时它以某种方式改变,InvocationTargetException并且在上面的代码中,catch(Exception e) e InvocationTargetException并不ArrayIndexOutOfBoundsException 像预期的那样.

什么可能导致这样的行为或我如何检查这样的事情?

java reflection exception invoke

299
推荐指数
6
解决办法
95万
查看次数

通过反射使用字符串值设置属性

我想通过Reflection设置对象的属性,值为type string.所以,举个例子,假设我有Ship一个属性为的类Latitude,它是一个double.

这是我想做的事情:

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, value, null);
Run Code Online (Sandbox Code Playgroud)

这样就抛出了ArgumentException:

"System.String"类型的对象无法转换为"System.Double"类型.

如何将值转换为正确的类型,基于propertyInfo

c# reflection type-conversion propertyinfo setvalue

298
推荐指数
8
解决办法
26万
查看次数

如何判断是否定义了JavaScript函数

如何判断JavaScript中的函数是否已定义?

我想做这样的事情

function something_cool(text, callback) {
    alert(text);
    if( callback != null ) callback();
}
Run Code Online (Sandbox Code Playgroud)

但它让我了

回调不是一个功能

未定义回调时出错.

javascript reflection

292
推荐指数
9
解决办法
16万
查看次数

Convert.ChangeType()在Nullable Types上失败

我想将一个字符串转换为一个对象属性值,其名称我作为一个字符串.我试图这样做:

string modelProperty = "Some Property Name";
string value = "SomeValue";
var property = entity.GetType().GetProperty(modelProperty);
if (property != null) {
    property.SetValue(entity, 
        Convert.ChangeType(value, property.PropertyType), null);
}
Run Code Online (Sandbox Code Playgroud)

问题是,当属性类型为可空类型时,这会失败并抛出Invalid Cast Exception.这不是无法转换的值的情况 - 如果我手动执行此操作它们将起作用(例如DateTime? d = Convert.ToDateTime(value);)我已经看到了一些类似的问题,但仍然无法使其工作.

.net c# reflection

288
推荐指数
5
解决办法
7万
查看次数

检查类是否派生自泛型类

我的项目中有一个派生类的泛型类.

public class GenericClass<T> : GenericInterface<T>
{
}

public class Test : GenericClass<SomeType>
{
}
Run Code Online (Sandbox Code Playgroud)

有没有办法找出一个Type对象是否来自GenericClass

t.IsSubclassOf(typeof(GenericClass<>))
Run Code Online (Sandbox Code Playgroud)

不起作用.

c# generics reflection

287
推荐指数
11
解决办法
14万
查看次数

如何动态获取函数参数名称/值?

有没有办法动态获取函数的函数参数名称?

假设我的函数看起来像这样:

function doSomething(param1, param2, .... paramN){
   // fill an array with the parameter name and value
   // some other code 
}
Run Code Online (Sandbox Code Playgroud)

现在,我如何从函数内部获取参数名称及其值的列表到数组中?

javascript reflection function-parameter

282
推荐指数
14
解决办法
16万
查看次数

如何在Python中获取当前模块中所有类的列表?

我已经看到很多人从模块中提取所有类的例子,通常是这样的:

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj
Run Code Online (Sandbox Code Playgroud)

真棒.

但我无法找到如何从当前模块中获取所有类.

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()
Run Code Online (Sandbox Code Playgroud)

这可能是非常明显的事情,但我找不到任何东西.谁能帮我吗?

python reflection inspect

278
推荐指数
7
解决办法
16万
查看次数

使用Type变量强制转换变量

在C#中,我可以将类型为object的变量转换为类型为T的变量,其中T是在Type变量中定义的吗?

c# reflection types

256
推荐指数
6
解决办法
24万
查看次数

通过反射获取命名空间中的所有类型

如何通过C#中的反射获取命名空间中的所有类?

.net c# reflection namespaces

252
推荐指数
8
解决办法
15万
查看次数

如何将反射添加到C++应用程序?

我希望能够内省一个C++类的名称,内容(即成员及其类型)等.我在这里说的是原生C++,而不是托管C++,它有反射.我意识到C++使用RTTI提供一些有限的信息.哪些额外的库(或其他技术)可以提供此信息?

c++ reflection templates sfinae

242
推荐指数
19
解决办法
19万
查看次数