Hej!
Jag har ett makro som ska dokumentera kod. Bl.a. ska man genom att placera markören i en funktion(metoder/konstruktorer) eller olika delar av properties (Get/Let/Set) kunna köra makrot och få automatisk dokumentation om t.ex. vem som bad om dokumentationen, när man bad om det, men också från vilken del av property man kallade på makrot. Och det är i properties det börjar bli krångligt.
Att fastställa om det är en konstruktor eller en metod i funktioner man kallar ifrån är enkelt att kolla genom instance.FunctionKind = vsCMFunction.vsCMFunctionConstructor. FunctionKind är en medlem i CodeFunction, men något liknande finns inte i CodeProperty. Ändå finns det enumerationsvärden som representerar de olika Propertydelarna (Get/Let/Set) i form av:
vsCMFunction.vsCMFunctionPropertyGet = 2
vsCMFunction.vsCMFunctionPropertyLet = 4
vsCMFunction.vsCMFunctionPropertySet = 8
Fast om man inte kan plocka ut de värdena ur koden för jämföring så är de tämligen värdelösa.
Värt att ha i åtanke om du vill hjälpa till är att jag är ny för VB sen 4 dagar tillbaka och programmering över huvud taget sen september förra året, så ha lite tålamod med mig om jag inte förklarat all nödvändigt eller förstår allt
Såhär långt har jag kommit hittills
'instance är tidigare satt till en CodeElement-typ, antingen CodeFunction eller CodeProperty
'Nu ska det alltså klargöras varifrån funktionen eller propertyn som makrot kallades.
If instance.FunctionKind = vsCMFunction.vsCMFunctionConstructor Then
'(SkapaDokumentation fixar XML dokumentationen som lägger sig ovanför
'den del som makrot kallades ifrån)
SkapaDokumentation(instance)
ElseIf instance.FunctionKind = vsCMFunction.vsCMFunctionFunction Then
SkapaDokumentation(instance)
'Det är här FunctionKind måste ersättas med någon som passar för CodeProperty
ElseIf instance.FunctionKind = vsCMFunction.vsCMFunctionPropertyGet _
Or instance.FunctionKind = vsCMFunction.vsCMFunctionPropertySet _
Or instance.FunctionKind = vsCMFunction.vsCMFunctionPropertyLet Then
SkapaDokumentation(instance)
Tacksam för hjälp!
EDIT: Jag får givetvis ändra på strukturen så att koden kollar CodeElement typen (antingen CodeFunction eller CodeProperty) innan IF satsen, annars blir det felmeddelande när en koden inte hittar FunctionKind på en CodeProperty.