Hjelp med å bruke TypeConverters for enums i et Excel-PIA montasje

stemmer
0

Jeg ønsker å bruke en TypeCoverter regionalisering utgang for enums i en sammenstilling som er en PIA lastet inn i Excel.

Jeg kan kjøre dette, og det fungerer på et stevne i et prøveprosjekt jeg opprettet med en eksplisitt referenceed montering, men når du kjører et prosjekt som har blitt bygget som et Excel-PIA. Hvis jeg prøver: _ offentlig enum MyEnum ITEMA ItemB slutten enum

og i kode Mye = MyEnum.ItemA Dim omformer som System.ComponentModel.TypeConverter = TypeDescriptor.GetConverter (Mye)

I umiddelbar vinduet? converter.ToString () goves System.ComponentModel.EnumConverter

mens det i mitt andre prosjekt (også en sterkt undertegnet montering, men refererte direkte fra en nyopprettet stubb Windows Form prosjektet), får jeg

? converter.ToString ClassLibrary1.LocalizedEnumConverter

så det ser ut som LocalizedEnumConverter ikke blir bundet til enum - noen ideer? Er dette på grunn av måten Excel laster montering, og er det en måte arounfd dette?

Publisert på 19/10/2008 klokken 12:11
kilden bruker
På andre språk...                            


2 svar

stemmer
0

Er typen omformer i samme dll som enum? TypeDescriptor må kunne løse type-omformere, UI-type-redaktører, osv - ellers bruker den enkle standarder.

Jeg har ikke prøvd noe sepcifically med Excel, men jeg lurer på om det ikke er like enkelt som montering oppløsning ...

Hvis det hjelper, kan du bruke AppDomain.AssemblyResolvehendelsen til å tilpasse montering lasting - men dette er et komplekst område ... Jeg ville unngå det med mindre det er absolutt nødvendig.

Svarte 19/10/2008 kl. 13:00
kilden bruker

stemmer
0

Etter en god del å grave rundt, har jeg funnet løsningen, dette vil fungere for en forsamling som er lastet med ikke kan løses:

Legg et behandlingsprogram for forsamlings resolusjon:

    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    AddHandler currentDomain.AssemblyResolve, AddressOf AssemblyResolve_EventHandler

deretter å håndtere vedtak:

Private Function AssemblyResolve_EventHandler(ByVal sender As Object, ByVal e As System.ResolveEventArgs) As System.Reflection.Assembly
    Dim asm() As System.Reflection.Assembly = System.AppDomain.CurrentDomain.GetAssemblies()

    For i As Integer = 0 To asm.Length
        If asm(i).FullName = e.Name Then
            Return asm(i)
        End If
    Next
    Return Nothing
End Function
Svarte 27/10/2008 kl. 09:06
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more