首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用属性启动函数

使用属性启动函数
EN

Stack Overflow用户
提问于 2015-07-08 13:29:13
回答 2查看 106关注 0票数 1

我有一个函数,它使用秒表实例并测量放入其中的任何方法的时间。现在,我必须为每个方法启动和停止它。我想现在就使用属性来做这个。我只想在每个方法上放置一个属性,它会自动启动和停止测量时间的函数。

函数代码:

代码语言:javascript
复制
 [DataContract]
[Serializable]

public class AppTrace:BaseModel<AppTrace>
{
    [DataMember]
    public string Comment;
    [DataMember]
    public string MethodName;
    [DataMember]
    public DateTime StartTimeStamp;
    [DataMember]
    public int Duration;
    [DataMember]
    public int UserObjectId;
    [DataMember]
    public string MachineName;
    [DataMember]
    public int ToolId;
    private System.Diagnostics.Stopwatch stpWatch;

public AppTrace(string comment,string methodName,int userObjectId ,string machineName = "",int? toolId=null)

    {
        MethodName = methodName;
        UserObjectId = userObjectId;
        StartTimeStamp = DateTime.UtcNow;
        Comment = comment;
        MachineName = machineName;

        stpWatch = new System.Diagnostics.Stopwatch();
        stpWatch.Start();
    }

    public AppTrace()
    {
    }

    public void CloseTrace()
    {
        this.stpWatch.Stop();
        Duration=Convert.ToInt32( this.stpWatch.ElapsedMilliseconds);
    }
EN

回答 2

Stack Overflow用户

发布于 2015-07-08 13:32:26

这可能不会只与.NET框架一起工作。Aspect oriented programming由各种第三方提供商实现,Postsharp可能是最常用的。

您可以实现自己的属性,但如果没有AOP框架,它们将不会为您执行任何代码。它们只是你可以用反射查询的元数据。

票数 0
EN

Stack Overflow用户

发布于 2015-07-08 13:46:20

解决这个问题的另一种方法是:

代码语言:javascript
复制
protected void StopwatchThis(Action func)
        {
            //some code
            func.Invoke();
            //more code
        }

因此,如果您正在进行一些优化,并且想要测试运行时,您基本上可以将您的方法委托给此函数并获得输出。

问题有点过于宽泛

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31284180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档