【发布时间】:2012-10-30 13:58:54
【问题描述】:
也许我的问题很奇怪......我想知道是否可以对一个短语使用反射。
我试图与 C# 中的反射进行比较。到目前为止,我将属性的名称作为字符串传递,将值作为对象传递,如下所示:Cmp("foo", "abc")。
这样我必须检查foo是否是类中的现有属性,并检查值类型是否与属性类型匹配(在上面的示例中 foo 是字符串属性,值是字符串)。这种方法很好用!
我只是想知道是否可以将短语作为参数发送并用反射或类似的东西对其进行分析。
我的意思是,就像上面的例子一样,而不是像Cmp("foo", "abc")那样调用函数,只需像这样调用Cmp(A.foo == "abc")这样的函数(A是具有foo属性的类),然后分析该属性是foo并且值为"abc"。
我知道这听起来很奇怪,而且对我来说没有必要。它只是为了这个想法。
有可能吗?
编辑
如果我不清楚,我已经写了Cmp(string, string)方法,它工作正常!
我只想知道是否有办法像这样编写Cmp 方法:Cmp(A.foo == "abc")。该参数是一个短语。
编辑 2
例如,您可以在 C 中执行类似的操作。您可以这样创建宏:
#define Cmp(phrase) printf(##phrase)
然后,如果您将其称为 Cmp(A.foo == "abc"),则输出将是:
A.foo == "abc"
就像将整个短语作为参数传递并对其进行分析。我知道宏是预编译的东西,我只想知道C#中是否有类似的东西
【问题讨论】:
-
我不明白这个问题。如果
obj.Foo == "abc"可以,Cmp可以做什么? -
对不起,我会解决这个问题,包含
Cmp的类也包含具有foo属性的对象。应该是A.foo == "abc" -
您可能需要发布更完整的代码才有意义。
-
基本上你想遍历你调用
Cmp的对象的所有属性,并检查它是否有一个名为Foo的属性并比较值?
标签: c# reflection parameters comparison phrase