标签: reflection

如何动态评估C#代码?

我可以eval("something()");在JavaScript中动态执行代码.有没有办法让我在C#中做同样的事情?

我想要做的一个例子是:我有一个整数变量(比如说i),我有多个属性名称:"Property1","Property2","Property3"等.现在,我想执行一些操作在"财产i "属性取决于的价值i.

使用Javascript这非常简单.有没有办法用C#做到这一点?

c# reflection properties c#-2.0

91
推荐指数
7
解决办法
6万
查看次数

使用反射在C#中创建没有默认构造函数的类型实例

以下面的课程为例:

class Sometype
{
    int someValue;

    public Sometype(int someValue)
    {
        this.someValue = someValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用反射创建这种类型的实例:

Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
Run Code Online (Sandbox Code Playgroud)

通常这会起作用,但是由于SomeType没有定义无参数构造函数,调用Activator.CreateInstance将抛出类型异常,MissingMethodException并带有消息" 没有为此对象定义无参数构造函数. "是否还有另一种方法可以创建此类型的实例?将无参数构造函数添加到我的所有类中会有点麻烦.

c# reflection instantiation default-constructor

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

如何在程序集中查找从特定类型C#继承的所有类型

如何获得从特定其他类型继承的所有类型的集合?

c# reflection

90
推荐指数
2
解决办法
4万
查看次数

使用C#反射来调用构造函数

我有以下场景:

class Addition{
 public Addition(int a){ a=5; }
 public static int add(int a,int b) {return a+b; }
}
Run Code Online (Sandbox Code Playgroud)

我通过以下方式调用另一个类:

string s="add";
typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22
Run Code Online (Sandbox Code Playgroud)

我需要一种类似于上面的反射语句的方法来创建一个Addition类型的新对象 Addition(int a)

所以我有字符串s= "Addition",我想用反射创建一个新对象.

这可能吗?

c# reflection constructor

90
推荐指数
2
解决办法
9万
查看次数

如何将Java对象(bean)转换为键值对(反之亦然)?

假设我有一个非常简单的java对象,它只有一些getXXX和setXXX属性.此对象仅用于处理值,基本上是记录或类型安全(和性能)映射.我经常需要将此对象转换为键值对(字符串或类型安全)或从键值对转换为此对象.

除了反射或手动编写代码来进行此转换之外,实现此目的的最佳方法是什么?

一个示例可能是通过jms发送此对象,而不使用ObjectMessage类型(或将传入消息转换为正确类型的对象).

java reflection collections javabeans

89
推荐指数
6
解决办法
18万
查看次数

如何检查变量的类型是否与存储在变量中的类型匹配

User u = new User();
Type t = typeof(User);

u is User -> returns true

u is t -> compilation error
Run Code Online (Sandbox Code Playgroud)

如何以这种方式测试某个变量是否属于某种类型?

c# reflection types

89
推荐指数
4
解决办法
10万
查看次数

为什么甚至可以更改私有成员,或者使用反射在C#中运行私有方法?

我最近遇到了一个问题,我使用的是C#,它是通过使用反射设置一个私有成员来解决的.

我惊呆了,发现设置私有成员/字段并运行私有方法是C#中允许和可能的事情.这不是一个如何做这些事情的问题,他们有很好的记录,我的问题是:为什么?

如果将字段/成员/方法设置为私有/内部,为什么C#作为一种语言允许将这些字段设置在范围之外?我认为这会抛出某种异常.如果类要求更改或设置它们不会有方法或构造函数?

.net c# reflection

89
推荐指数
7
解决办法
5139
查看次数

GetProperties()返回接口继承层次结构的所有属性

假设以下假设的继承层次结构:

public interface IA
{
  int ID { get; set; }
}

public interface IB : IA
{
  string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用反射并进行以下调用:

typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance) 
Run Code Online (Sandbox Code Playgroud)

只会产生接口的属性IB,即" Name".

如果我们要对以下代码进行类似的测试,

public abstract class A
{
  public int ID { get; set; }
}

public class B : A
{
  public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

该调用typeof(B).GetProperties(BindingFlags.Public | BindingFlags.Instance)将返回PropertyInfo" ID"和" Name" 的对象数组.

有没有一种简单的方法来查找接口的继承层次结构中的所有属性,如第一个示例中所示?

.net c# reflection

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

如何找出ArrayList <Object>中每个对象的类型?

我有一个ArrayList,由从db导入的不同元素组成,由字符串,数字,双精度和整数组成.有没有办法使用反射类型技术来找出每个元素包含的每种类型的数据?

仅供参考:有这么多类型数据的原因是这是一段用不同的数据库编写的java代码.

java generics reflection arraylist

87
推荐指数
6
解决办法
26万
查看次数

如何在Go中获取函数的名称?

鉴于一个功能,是否有可能得到它的名字?说:

func foo() {
}

func GetFunctionName(i interface{}) string {
    // ...
}

func main() {
    // Will print "name: foo"
    fmt.Println("name:", GetFunctionName(foo))
}
Run Code Online (Sandbox Code Playgroud)

我被告知runtime.FuncForPC会有所帮助,但我不明白如何使用它.

reflection go go-reflect

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