如何使用自定义属性,我的c#项目。

问题描述 投票:-1回答:1

我想在我的N-tier项目中使用自定义属性。

缓存--记录--验证--异常。

c# validation caching logging fluent
1个回答
0
投票

首先你应该搜索AOP.这是某种发展中的方法论。

面向方面的编程(AOP)是一种编程范式,其目的是通过允许分离交叉问题来提高模块化。维基百科

这不是你想象的那么简单,在C#中你必须使用一些第三方库。

我建议从 忠告先生,它将帮助你。


0
投票

写你的自定义属性会是这样一个小样子。

using System;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method)]
public class LogAttribute : Attribute
{
    public bool _loggingEnabled;

    public LogAttribute(loggingEnabled)
    {
        _loggingEnabled = loggingEnabled;
    }
}

用法示例:

[Log(true)]
public class SampleClass
{
}

如果你需要进一步的说明 如果你能分享更多关于你的属性的预期用途 我将能更清楚地说明一些问题 例如,我不确定你是否想让你的日志属性给你一种方法来明确说明该类结构是否会被记录,但这就是我决定演示的方式。另外,请注意,你可以将其应用于属性,以及其他各种成员通过 AttributeUsage 属性上的属性类声明。希望能帮到你。

更新一下。

保存方法范例

[Log(true)]
public void Save(Company company)
{
   _context.Save();
}

然后你将使用静态方法 Attribute.GetCustomAttribute(MemberInfo element, Type attributeType) 来检索存储在该属性中的信息。因为在这种情况下,你可能会在很多地方使用日志记录,所以你会在应用程序的其他地方写另一个方法(很可能是静态的),它看起来像这样(更多信息请看下面的System.Reflection参考资料的链接)。

public static void Log(MemberInfo element)
{
     LogAttribute attribute = Attribute.GetCustomAttribute(element, typeof(LogAttribute);

     if (attribute._loggingEnabled)
     {
         // Create log file and add information from here.
     }
}

属性参考

反思参考

© www.soinside.com 2019 - 2024. All rights reserved.