C# 如何在不使用CodeDom实现的情况下添加分部方法
如何让CodeDom删除“C# 如何在不使用CodeDom实现的情况下添加分部方法,c#,codedom,partial-methods,C#,Codedom,Partial Methods,如何让CodeDom删除“{}”,这将解决我试图编译的编译器错误?我曾想过只使用CodeSnippetStatement(我宁愿不这样做,因为这首先会破坏使用CodeDom的目的),但我在CodeTypeDeclaration类中找不到添加代码段的位置 所以:我也需要 向类添加无实现的方法 向类中添加随机代码段 神秘第三选项 在尝试通过CodeDom生成PInvoke签名之前,我遇到了这个问题。经过大量的调查,我发现用PInvoke是不可能做到这一点的,我认为对于部分方法也是如此 我发现解决这个
{}
”,这将解决我试图编译的编译器错误?我曾想过只使用CodeSnippetStatement
(我宁愿不这样做,因为这首先会破坏使用CodeDom的目的),但我在CodeTypeDeclaration
类中找不到添加代码段的位置
所以:我也需要
在尝试通过CodeDom生成PInvoke签名之前,我遇到了这个问题。经过大量的调查,我发现用PInvoke是不可能做到这一点的,我认为对于部分方法也是如此 我发现解决这个问题的最佳方法是按原样生成文件。我记下了所有我打算命名为PInvoke的方法。然后,我用正则表达式搜索文件,寻找那些方法签名,并用分号替换
{}的
这是一次可怕的黑客攻击,但它完成了任务 好吧,我是这么做的:
partial void OnUpdate() {
}
partial void OnInsert() {
}
partial void OnDelete() {
}
partial void OnSelect() {
}
partial void OnSelectAll() {
}
内部列表createEventHooks()
{
string[]eventNames=新字符串[]{“OnUpdate()”、“OnInsert()”、“OnDelete()”、“OnSelect()”、“OnSelectAll()”};
List eventHooks=new List();
foreach(eventNames中的字符串eventName)
{
CodeMemberField eventHook=new CodeMemberField();//将其作为字段而不是方法执行
eventHook.Name=eventName;
eventHook.Attributes=MemberAttributes.ScopeMask;
eventHook.Type=新代码类型引用(“部分无效”);
添加(eventHook);
}
返回事件挂钩;
}
基本上,我将方法更改为字段,并在“字段”名称中包含
()
s。仍然是一个黑客,但比搜索/替换生成的代码(勉强)要好。真是一个聪明的黑客!
partial void OnUpdate() {
}
partial void OnInsert() {
}
partial void OnDelete() {
}
partial void OnSelect() {
}
partial void OnSelectAll() {
}
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;
}