使用CodeDom的VB.NET分部方法的变通方法?
我知道CodeDom不支持分部方法,但是有解决方法吗?我找到了一个,但我需要一个用于VB.NET的。谢谢。这是一个可怕的黑客攻击,和C#one一样邪恶,但它确实有效:使用CodeDom的VB.NET分部方法的变通方法?,vb.net,codedom,partial-methods,Vb.net,Codedom,Partial Methods,我知道CodeDom不支持分部方法,但是有解决方法吗?我找到了一个,但我需要一个用于VB.NET的。谢谢。这是一个可怕的黑客攻击,和C#one一样邪恶,但它确实有效: Imports System.CodeDom Imports System.CodeDom.Compiler Imports System.IO Module Module1 Sub Main() Dim unit As New CodeCompileUnit Dim nspace As
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.IO
Module Module1
Sub Main()
Dim unit As New CodeCompileUnit
Dim nspace As New CodeNamespace("SomeNamespace")
Dim vbclass As New CodeTypeDeclaration("SomeClass")
vbclass.IsClass = True
Dim snippet As New CodeSnippetTypeMember("Partial _")
vbclass.Members.Add(snippet)
Dim method As New CodeMemberMethod()
method.Name = "SomeMethod"
method.Attributes = MemberAttributes.Private
vbclass.Members.Add(method)
nspace.Types.Add(vbclass)
unit.Namespaces.Add(nspace)
dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("VB")
Dim options As New CodeGeneratorOptions()
options.BlankLinesBetweenMembers = False
dim writer As new StringWriter()
provider.GenerateCodeFromCompileUnit(unit, writer, options)
Console.WriteLine(writer.ToString())
Console.ReadLine()
End Sub
End Module
请注意,BlankLinesBetweenMembers选项对于使hack正常工作至关重要。输出:
Option Strict Off
Option Explicit On
Namespace SomeNamespace
Public Class SomeClass
Partial _
Private Sub SomeMethod()
End Sub
End Class
End Namespace
我最终检测到了这种语言并使用了CodeSnippetTypeMember()
感谢您的回复,但我不希望通过更改BlankLinesBetweenMembers选项来影响我生成的所有代码。
Dim onDeleting = "Partial Private Sub OnDeleting()" & Environment.NewLine & "End Sub"
type.Members.Add(New CodeSnippetTypeMember(onDeleting))