我正在寻找一种在编译时扩展/注入代码的方法,例如模板/宏/片段......
假设我在应用程序的很多地方都编写了这段代码:
[JsonObject("MyProperty")]
private string MyPropertyJson { get; set; }
public object MyProperty { get; set; }
MyPropertyJson 属性仅用于 EF 映射目的,因此我将值保存为 DB 中的 JSON 字符串,但对于类用户,他们只知道 MyProperty 属性。
我想要做的是,在编译时,将 MyPropertyJson 扩展为:
private string MyPropertyJson
{
get
{
return JsonConvert.SerializeObject(MyProperty);
}
set
{
MyProperty = JsonConvert.DeserializeObject(value);
}
}
我希望仅在输出二进制文件中完成此操作而不影响源代码。
我知道 Unity、PostSharp、Aspect-Injector 等。但它们并没有达到我想要的效果,因为通过使用它们,我必须使用一些反射来查找和操作 MyProperty 但我想完全像它被写的那样扩展它在同一个类中,可以访问所有类内部。
它与代码片段完全相同,但要在编译阶段进行扩展。
Smart猫小萌
斯蒂芬大帝
蝴蝶刀刀
相关分类