Marcați enum din dll-ul referit cu FlagsAttribute

În .Net pot (și ar trebui) să aplice FlagsAttribute la enumurile care sunt folosite ca bitmask. În acest fel pot utiliza metoda HasFlag() -metoda și ReSharper nu se înfurie dacă fac operații bitwise pe ele.

Într-un proiect trebuie să folosesc un enum dintr-un DLL scris în vb6 care, desigur, nu are codul FlagsAttribute . (Am văzut codul, valorile sunt steaguri de biți.)

Deși VisualStudio o marchează ca pe un cod roșu ori de câte ori folosesc .HasFlag() , se compilează și rulează foarte bine. Și pot "dezactiva" avertismentul ReSharper pe operațiile bit-urilor prin întinderea întotdeauna a enum-ului la int (sau suprimarea lui cu un comentariu, ...)

Totuși, mă întreb dacă există o abordare ceva mai curată, cum ar fi marcarea enum-ului ca steaguri o singură dată?

0
Mă îndoiesc că MIDL acceptă chiar și un atribut "flags" pe un enum, deci nu este într-adevăr o problemă VB6: C ++, etc. ar trebui să fie aceeași. Poate cineva poate găsi unul? Dacă astfel puteți crea un tipelib separat pe baza celui din DLL.
adăugat autor Bob77, sursa

1 răspunsuri

Nu puteți marca o dependență externă - dacă aveți un dll , indiferent de sursă, nu puteți schimba pur și simplu propriile interne (bine, puteți necesită rescrierea fișierului binar).

O opțiune este să scrieți enumerarea emblemelor proprii și un mapper între VB6 și al tău și pur și simplu să folosești versiunea în codul tău și pur și simplu să ignori problemele din stratul de cartografiere.

3
adăugat
Nu ceea ce speram să aud, dar un fel de ceea ce mă așteptam. Mulțumiri.
adăugat autor linac, sursa
Cartografia ar putea fi chiar la timpul de compilare doar prin acordarea acelorași valori sau prin utilizarea directă a valorilor enumate importate.
adăugat autor Deanna, sursa