100 以上の public static メソッドを持つクラスがあり、毎回 1 つの static 呼び出しを制限したいのですが、数行のコードでこれを達成するためのトリックはありますか? これを達成するためのクラス属性が好きですか?
このような:
public class Test
{
public static void A() { }
public static void B() { }
public static void C() { }
public static void D() { }
}
一度にアクセスできる静的メソッド呼び出しは 1 つだけです。メソッド B が を呼び出しているときは、メソッド B が戻るまで、他のメソッドへの呼び出しをブロックする必要があります。
申し訳ありませんが、誤解を招くようなタイトルを投稿したようです。私の本当の目的は、すべての関数にlockステートメントを追加することによって、コーディングを減らして同じ結果を達成する方法を見つけることです。
解決済み
最後にすべての関数にロックステートメントを追加することで問題を解決しましたが、次のマクロを使用して繰り返しの仕事をしました。
''
'' edit from Code outlining sample.
''
Sub LoopFunction()
Dim i As Integer
Dim fileCM As FileCodeModel
Dim elts As EnvDTE.CodeElements
Dim elt As EnvDTE.CodeElement
fileCM = DTE.ActiveDocument.ProjectItem.FileCodeModel
elts = fileCM.CodeElements
For i = 1 To elts.Count
elt = elts.Item(i)
EditFunction(elt)
Next
End Sub
Sub EditFunction(ByVal elt As EnvDTE.CodeElement)
If (elt.Kind = EnvDTE.vsCMElement.vsCMElementNamespace) Then
Dim i As Integer
Dim mems As EnvDTE.CodeElements
mems = elt.Members
For i = 1 To mems.Count
EditFunction(mems.Item(i))
Next
ElseIf (elt.Kind = vsCMElement.vsCMElementClass) Then
Dim i As Integer
Dim mems As EnvDTE.CodeElements
mems = elt.Members
For i = 1 To mems.Count
EditFunction(mems.Item(i))
Next
ElseIf (elt.Kind = vsCMElement.vsCMElementFunction) Then
Dim epStart As EnvDTE.EditPoint
Dim epEnd As EnvDTE.EditPoint
Dim textSelection As EnvDTE.TextSelection
epStart = elt.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint()
epEnd = elt.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint()
textSelection = DTE.ActiveDocument.Selection
textSelection.MoveToPoint(epEnd)
textSelection.Insert(NewLine & "}" & NewLine)
textSelection.MoveToPoint(epStart)
textSelection.Insert(NewLine & "lock(lockTest){" & NewLine)
End If
End Sub