动态构建方法/属性体

时间:2011-01-21 14:41:02

标签: c# .net aop

所以我有这个样板代码,我想要应用于某些类的一堆属性,每个类都基本相同。我不知道是否必须一次又一次地为所有这些属性输入相同的代码,我想知道是否有任何方法可以通过为属性分配C#属性,在编译后或运行时动态构建这些属性方法。包括每个方法(字符串)的细微差别,然后通过反射找到这些属性。

我知道PostSharp,但我正在寻找免费或开源的东西。

例如,不必这样做:

public string Name {
    get { return _member.GetValue( "othername" ); }
    set { _member.SetValue( "othername", value ); }
}

...对于我拥有的每个房产,我只想这样说:

[MapTo( "othername" )]
public string Name { get; set; }

有什么想法吗?

5 个答案:

答案 0 :(得分:1)

  1. 您可以使用Mono.Cecil进行动态代码注入。
  2. 您可以将这些属性设置为虚拟并生成覆盖这些属性的类,并将新类编译为程序集,其中将定义重写的属性。然后,您应该创建动态生成的类的实例,并将其用作定义的类。

答案 1 :(得分:1)

您可以使用Unity interception extension执行类似操作。

答案 2 :(得分:1)

好的,所以它可能有自己的答案。我知道以下AOP框架,您无需支付:

答案 3 :(得分:0)

您好像正在寻找AOP (Aspect Oriented Programming)之类的{{1}}。

它允许您以编程方式注入代码(就像您提到的那样)并且非常灵活。

答案 4 :(得分:0)

查看CInject on Codeplex这是代码注入的开源替代方案