分类C#事件,代理,回调等

时间:2013-03-07 15:39:19

标签: c# events conventions

简单的问题,我想:你如何在C#中对与事件相关的项目进行分类/命名?

例如,我目前的约定类似于以下内容:

public class A
{
    ...
    #region Delegates
    public delegate void CallIncomingEventHandler(string displayName);
    #endregion


    #region Event Handlers
    public event CallIncoming;
    #endregion
    ...
}

public class B
{
    ...
    #region Events
    private void A_CallIncoming(string displayName)
    {
        // do stuff here
    }
    #endregion
}

我的困惑在于定义" SomethingEventHandler"使用"委托"的类型修饰符并调用它们"代表",然后使用"事件"定义类似字段的事件。修饰符并调用它们"事件处理程序",然后调用对事件做出反应的方法"事件"。

我的命名是否正确?

我可以创建和使用自定义事件等,但我可以帮助理解组件的名称以及其他人如何组织它们。

感谢。

2 个答案:

答案 0 :(得分:1)

您描述的.NET中使用的约定不是您吗?

我个人认为你的方法没有问题。众所周知,每个使用.NET的开发人员都很可能期望,如果不是相同的约定那么接近它。那么,为什么在存在采用的惯例时你应该发明一些新东西呢?

而不是这样我会建议考虑如何在类中调用事件,以及如何为将来的代理扩展参数?这里一个很好的起点将是再次遵循.NET约定,如delegate void SomethingEventHandler(object sender, EventArgs e)之类的委托。在this question中给出了一个很好的想法。

希望这减少了你的疑虑。

答案 1 :(得分:0)

以防其他人/C# 新手需要更具体的解释/示例:

CTRL + ALT + BREAK, CURSOR-DOWN, ENTER

对于 C# 中的其他程序元素,我使用(您可以)使用以下可选规则:

  1. 始终使用与您的语言相同的字符大小写(UpperCamelCase 或lowerCamelCase)!
  2. 始终遵循您的编程语言的命名约定/规则! (查看/分析/复制框架中的命名!)
  3. 我使用前缀命名,当且仅当名称不违反规则 0 和 1,
  • like: "p" + ParameterName(为了更好地识别局部变量和参数
  • 或:“m”+ MemberVariableName(为了更好地识别局部变量和成员变量。
  • 或:“I”+ InterfaceName(例如:IDeserialize、IXmlConvert、...)
  • 或:“A”+ AbstracClassName(例如:ADeserializer、AXmlConvert、...)
  • 或:"E" + EnumerationName(例如:EState、EErrorCode、EMemberType、...)
  • 或:"S" + StaticVarialeNames
  • 和: ALL_UPPER_CASE 用于:
    • 编译时常量“public const double MY_CONST = -1.23;”
    • 运行时常量:“public static readonly MyClass MY_CLASS = new MyClass()...”)