标签: reflection

从JSON数据生成JSON模式的工具

我们有这个json架构草案.我想得到我的JSON数据样本并为JSON模式生成一个框架,我可以手动返工,添加描述,必需等内容,这些内容不能从具体示例中获取.

例如,从我的输入example.json:

{
    "foo": "lorem", 
    "bar": "ipsum"
}
Run Code Online (Sandbox Code Playgroud)

我会运行我的json_schema_g​​enerator工具,并得到:

{ "foo": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  },
  "bar": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  }
}
Run Code Online (Sandbox Code Playgroud)

此示例已手动编码,因此可能存在错误.是否有任何工具可以帮助我转换JSON - > JSON模式?

reflection validation json jsonschema

165
推荐指数
8
解决办法
20万
查看次数

BindingFlags.IgnoreCase不适用于Type.GetProperty()?

想象一下以下内容

T型有一个现场公司.执行以下方法时,它完美地工作:

Type t = typeof(T);
t.GetProperty("Company")
Run Code Online (Sandbox Code Playgroud)

以下调用我得到了null

Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Run Code Online (Sandbox Code Playgroud)

有人有个主意吗?

c# reflection getproperty bindingflags

163
推荐指数
3
解决办法
3万
查看次数

为什么Attributes.IsDefined()缺少重载?

受到SO问题的启发.Attribute类对IsDefined()方法有几个重载.涵盖的是应用于Assembly,Module,MemberInfo,ParameterInfo的属性.MemberInfo重载包括PropertyInfo,FieldInfo,EventInfo,MethodInfo,ConstructorInfo.

这需要处理大多数AttributeTargets.除了一个biggy:Attribute.IsDefined(Type,Type)没有重载,因此您可以检查是否在类上定义了属性.或者结构,委托或枚举.

并非这是一个真正的问题,Type.GetCustomAttributes()可以解决这个问题.但是所有的BlahInfo类型都有这个.我不知道缺乏对称性.我无法理解为什么这对Type来说会有问题.猜测遗传问题并没有向我解释.在混合中使用ValueType可能是一个领先者,但仍然没有意义.我不买"他们忘了",他们从不这样做.

为什么这个过载丢失了?

.net c# reflection

163
推荐指数
1
解决办法
8024
查看次数

如何使用反射获取调用方法名称和类型?

可能重复:
如何找到调用当前方法的方法?

我想编写一个方法来获取调用方法的名称,以及包含调用方法的类的名称.

有可能用C#反射吗?

c# reflection

155
推荐指数
5
解决办法
11万
查看次数

如何测试类型是否为原始

我有一个代码块,将类型序列化为Html标记.

Type t = typeof(T); // I pass <T> in as a paramter, where myObj is of type T
tagBuilder.Attributes.Add("class", t.Name);
foreach (PropertyInfo prop in t.GetProperties())
{
    object propValue = prop.GetValue(myObj, null);
    string stringValue = propValue != null ? propValue.ToString() : String.Empty;
    tagBuilder.Attributes.Add(prop.Name, stringValue);
}
Run Code Online (Sandbox Code Playgroud)

这个伟大的工程,但我希望它只是对基本类型,像这样做int,double,bool等,以及其他类型的不是原始的,但可以很容易地连载一样string.我希望它忽略列表和其他自定义类型之类的所有内容.

任何人都可以建议我这样做吗?或者我是否需要指定我想要允许的类型并打开属性的类型以查看是否允许它?这有点乱,所以如果我有一个更整洁的方式会很好.

c# reflection primitive-types

154
推荐指数
6
解决办法
8万
查看次数

仅检索在Java类中声明的静态字段

我有以下课程:

public class Test {
    public static int a = 0;
    public int b = 1;
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用反射来获取静态字段列表?我知道我可以获得所有字段的数组Test.class.getDeclaredFields().但似乎没有办法确定Field实例是否代表静态字段.

java reflection static field

152
推荐指数
2
解决办法
7万
查看次数

什么是invokedynamic以及如何使用它?

我一直听说有关添加到JVM的所有新酷功能,其中一个很酷的功能是invokedynamic.我想知道它是什么以及它如何使Java中的反射编程更容易或更好?

java reflection invokedynamic

152
推荐指数
4
解决办法
5万
查看次数

如何在C#中拦截方法调用?

对于给定的类,我希望有跟踪功能,即我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(只是方法签名).

我如何做到这一点假设:

  • 我不想为C#使用任何第三方AOP库,
  • 我不想将重复的代码添加到我想要跟踪的所有方法中,
  • 我不想更改类的公共API - 类的用户应该能够以完全相同的方式调用所有方法.

为了使问题更具体,让我们假设有3个类:

 public class Caller 
 {
     public static void Call() 
     {
         Traced traced = new Traced();
         traced.Method1();
         traced.Method2(); 
     }
 }

 public class Traced 
 {
     public void Method1(String name, Int32 value) { }

     public void Method2(Object object) { }
 }

 public class Logger
 {
     public static void LogStart(MethodInfo method, Object[] parameterValues);

     public static void LogEnd(MethodInfo method);
 }
Run Code Online (Sandbox Code Playgroud)

如何调用Logger.LogStartLogger.LogEnd每次调用方法1方法2,而无需修改Caller.Call方法,没有明确地加入调用Traced.Method1Traced.Method2

编辑:如果我允许稍微更改Call方法,会有什么解决方案?

c# reflection aop

148
推荐指数
7
解决办法
8万
查看次数

如何检查对象是否具有某些方法/属性?

也许使用动态模式?你可以使用dynamic关键字调用任何方法/属性,对吗?例如,如何在调用myDynamicObject.DoStuff()之前检查方法是否存在?

.net c# reflection methods properties

148
推荐指数
4
解决办法
14万
查看次数

如何动态加载Python类

给定一个Python类的字符串,例如my_package.my_module.MyClass,加载它的最佳方法是什么?

换句话说,我正在寻找Class.forName()Java中的等效函数,Python中的函数.它需要在Google App Engine上运行.

最好这是一个函数,它接受类的FQN作为字符串,并返回对类的引用:

my_class = load_class('my_package.my_module.MyClass')
my_instance = my_class()
Run Code Online (Sandbox Code Playgroud)

python reflection python-import

147
推荐指数
6
解决办法
13万
查看次数