[VB.NET] Gebruik maken van een C# class lib

Pagina: 1
Acties:

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Jaja, vreemde titel hè? Maar toch gaat het om een class library, geschreven in C# die ik in een VB.Net applicatie wil gebruiken.

Op zich lukt het wel, maar ik heb problemen met de constanten uit die C# Class Library.

The story: via gotdotnet.com heb ik een C# Class Lib gevonden om rechten op een file of dir te wijzigen. Het gaat om W32Security. En deze lib wil ik graag in een Vb.Net applicatie gebruiken (tja, ik had liever in C# want daar werkt het wel mee, maar het mot van me chef).

Dus ik een references gelegd naar die .dll en dit is de code (Console applicatie).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Imports Microsoft.Win32.Security

Module TestSec

    Sub Main()
        SetPermission("C:\Boot.ini")
    End Sub

    Sub SetPermission(ByRef ShortCut As String)
        Dim secDesc As SecurityDescriptor = SecurityDescriptor.GetFileSecurity
           (ShortCut, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION)
        Dim dacl As Dacl = secDesc.Dacl
        dacl.AddAce(New AceAccessAllowed(New Sid("Administrator"), 
           AccessType.GENERIC_ALL))

        secDesc.SetDacl(dacl)

        secDesc.SetFileSecurity(ShortCut, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION)
    End Sub

End Module


En dan gaat het nu om die
- SECURITY_INFORMATION.DACL_SECURITY_INFORMATION
- AccessType.GENERIC_ALL
en al die andere constanten die ik gebruik. Visual Studio onderstreep ze met blauw met de melding:

code:
1
Value of type 'Integer' cannot be converted to 'Microsoft.Win32.Security.AccessType'


Oké, ik werk niet veel in VB, maar vergeet ik iets? Doe ik iets doms, of kan ik simpelweg geen C# lib importeren en gebruiken in een VB.Net applicatie (eerlijk gezegd toch wel)?

Uiteraard met Ctype en al die andere conversie zooi geprobeerd, maar no way. Wie kan mij even op weg helpen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
C# en VB.NET kan je idd wel degelijk in één project gebruiken.

Echter, blijkbaar verwacht de method oid die je aanroept een variabele v/h type AccessType, en lever jij een integer aan oid ?

https://fgheysels.github.io/


Verwijderd

Ziet ernaar uit dat je een integer aanleverd en hij verwacht iets van dat Security.AccessType-enum

Weet niet wat die hoofdletter dingen zijn?!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
whoami schreef op 03 juni 2004 @ 10:23:
Echter, blijkbaar verwacht de method oid die je aanroept een variabele v/h type AccessType, en lever jij een integer aan oid ?
Indirect bied ik een integer aan, want die constanten zijn in principe integers. Want als ik browse, dan zie ik ook zaken staan als SECURITY_XYZ = 123.

Verwijderd

Maar daarom is het nog wel een ander type!

je zult je int moeten omzetten naar die andere enum.

C#
MessageTypes doelenum = (MessageTypes)Enum.Parse(typeof(MessageTypes),jewaarde);

[ Voor 72% gewijzigd door Verwijderd op 03-06-2004 10:37 ]


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Hmm...het is inderdaad in een Enum (stom, had ik aan moeten denken). Maar goed, het blijft voor mij onduidelijk.

Maar omdat het toch tijdelijk is, ga ik wel even werken met Object. Get is toch een tool die maar 1x moet draaien :) Maar probeerde hier wat van te leren. Thanks allemaal
Pagina: 1