我知道方法体内不支持attributes
,但我想知道也许有人已经解决了这个问题。我感兴趣的是一种技巧,可以让你在方法体内输入custom Attribute
,并且可以输入两个东西。方法体内的属性
- 类Intensiation(创建对象
Foo foo = new Foo()
) - 当这个对象调用特定功能(
foo.bar()
)
后来我打算用reflection
使用进入attributes
的metadata
。我来到了一群人,他们实际上已经拥有extented c#
这样做,但由于无法下载,我无法验证它。
这里是链接到他们的研究论文 Freely Annotating c# 请告诉我解决
UPDATE
进一步反思,我已经知道Foo类和方法栏的名称。 这是什么目的是知道foo在某些方法中调用bar()。
实施例
static void Main()
{
[p1inst]
ConcretePrototype1 p1 = new ConcretePrototype1("I");
[p1call]
ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
Console.WriteLine("Cloned: {0}", c1.Id);
// Wait for user
Console.Read();
}
以上是例子示出了结果。目前它不能完成,因为编译器给出了错误。但上述研究报告的作者声称,他们这样做是为了让方法体
整点是要找出一些方法FOO
类型的对象存在的内部属性和对象已调用bar()
或不是
什么是你想的问题解决?看起来无论是通过向类中添加一个属性都可以更容易地解决,或者,如果您无法修改该类,请使用该属性创建一个包装类。 – TheEvilPenguin 2012-08-02 05:56:08
我不知道我理解你的问题。将元数据与函数关联不会导致在调用该函数时发生任何事情。你将如何处理这个使用反射的元数据?无论你将要在功能体内使用属性*,你也可以使用它所属的函数体的属性元数据*外*。 – 2012-08-02 06:08:04
@ TheEvilPenguin我已经更新了这个问题。你说的方法可以确保调用方法bar()'? – 2012-08-02 06:08:10