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
类中添加片段的地方.
所以:我需要
好的,这就是我做的:
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 包含在"字段"名称中.仍然是一个黑客,但击败搜索/替换生成的代码(几乎没有).