如何使用CodeDom添加没有实现的部分方法

Chr*_*all 5 c# codedom partial-methods

internal List<CodeMemberMethod> createEventHooks()
        {
            string[] eventNames = new string[] { "OnUpdate", "OnInsert", "OnDelete", "OnSelect", "OnSelectAll" };
            List<CodeMemberMethod> eventHooks = new List<CodeMemberMethod>();

            foreach (string eventName in eventNames)
            {
                CodeMemberMethod eventHook = new CodeMemberMethod();
                eventHook.Name = eventName;
                eventHook.Attributes = MemberAttributes.ScopeMask;
                eventHook.ReturnType = new CodeTypeReference("partial void");
            }
            return eventHooks;
        }
Run Code Online (Sandbox Code Playgroud)

正在生成以下代码:

partial void OnUpdate() {
}

partial void OnInsert() {
}

partial void OnDelete() {
}

partial void OnSelect() {
}

partial void OnSelectAll() {
}
Run Code Online (Sandbox Code Playgroud)

如何让CodeDom删除" {}",这将解决我正在尝试编译的编译器错误?我想过只使用一个CodeSnippetStatement(我宁愿不这样做,因为这首先打破了使用CodeDom的目的),但我找不到CodeTypeDeclaration类中添加片段的地方.

所以:我需要

  1. 向类添加无实现方法
  2. 将随机片段添加到类中
  3. 神秘的第三选择

Chr*_*all 6

好的,这就是我做的:

    internal List<CodeMemberField> createEventHooks()
    {
        string[] eventNames = new string[] { "OnUpdate()", "OnInsert()", "OnDelete()", "OnSelect()", "OnSelectAll()" };
        List<CodeMemberField> eventHooks = new List<CodeMemberField>();

        foreach (string eventName in eventNames)
        {
            CodeMemberField eventHook = new CodeMemberField(); //do it as a FIELD instead of a METHOD
            eventHook.Name = eventName;
            eventHook.Attributes = MemberAttributes.ScopeMask;
            eventHook.Type = new CodeTypeReference("partial void");
            eventHooks.Add(eventHook);
        }
        return eventHooks;
    }
Run Code Online (Sandbox Code Playgroud)

基本上,我将我的方法更改为字段,并将()s 包含在"字段"名称中.仍然是一个黑客,但击败搜索/替换生成的代码(几乎没有).