Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
功能属性C#_C#_Properties_Attributes_Aop - Fatal编程技术网

功能属性C#

功能属性C#,c#,properties,attributes,aop,C#,Properties,Attributes,Aop,在C#中,如何使用属性本身或属性作为某种形式反射的标记来注入代码 [AttributeUsage(AttributeTargets.Property, Inherited = true)] public class AddMessage : Attribute { public AddMessage() { //... } } 例如,使用AddMessage可以从如下内容操作auto属性 [AddMessage] public int Count { g

在C#中,如何使用属性本身或属性作为某种形式反射的标记来注入代码

[AttributeUsage(AttributeTargets.Property, Inherited = true)]
public class AddMessage : Attribute
{
    public AddMessage()
    {
        //...
    }
}
例如,使用
AddMessage
可以从如下内容操作auto属性

[AddMessage]
public int Count { get; set; } = 0;
看起来像这样的东西

private int count;
public int Count {
    get {
        return count;
    }
    set {
        count = value;
        Console.WriteLine("Setter Message");
    }
}

//Somewhere else
count = 0;
你可以试试这个框架。它的一般方法是在编译程序集(“编织”)后根据其中的内容修改程序集。我不喜欢它完全是“元”而不是代码本身的一部分,但它可以做一些本来不可能的事情


该模块按照您想要执行的操作进行查看,否则您可能会编写自己的模块。

您不能使用属性,但可以使用AOP。你需要像OnExit方面或OnSetValue@ThomasWeller这样的东西谢谢你的链接,但由于价格原因,我很想避免发布sharp