Va bene avere una proprietà di tipo oggetto COM

8

Sto sviluppando un componente aggiuntivo COM per Microsoft Excel, utilizzando VB.Net. Ho scritto una classe per rappresentare un foglio di lavoro che contiene determinati elementi. Diciamo per esempio che ha un ListObject. Creo una proprietà per ListObject in questo modo:

Public Class MySheet

Private myTable as Excel.ListObject
Public Property Table() As Excel.ListObject
    Get
        Return myTable
    End Get
    Set(ByVal value As Excel.ListObject)
        myTable = value
    End Set
End Property

Ho quindi delle proprietà (nella classe MySheet) che rappresentano gli attributi di ListObject, ad esempio:

Private myTableStyle As String
Public Property TableStyle As String
    Get
        Return myTableStyle
    End Get
    Set(ByVal value As String)
        myTableStyle = value
        Me.Table.TableStyle = value
    End Set
End Property

Il motivo per cui l'ho impostato in questo modo è che nel mio codice principale non devo aggiornare due proprietà ogni volta che voglio cambiare lo stile (la proprietà TableStyle della classe MySheet AND la proprietà TableSTyle del ListObject). Quindi nel mio codice principale posso avere:

Dim MySheetObject As MySheet = New MySheet()
MySheetObject.Table = SomeListObject
MySheetObject.TableStyle = "TableStyleMedium4"

L'ultima riga memorizza il valore della stringa come proprietà dell'oggetto MySheet e modifica la proprietà TableStyle di ListObject in Excel.

Va bene, o sta infrangendo qualche principio di codifica?

    
posta Excel Developers 15.12.2015 - 12:25
fonte

2 risposte

1

Potresti avere altri motivi per "mettere in cache" il TableStyle localmente, ma, altrimenti, potrebbe essere visto come "ottimizzazione prematura". La proprietà potrebbe essere implementata come:

Public Property TableStyle As String
    Get
        Return Me.Table.TableStyle
    End Get
    Set(ByVal value As String)
        Me.Table.TableStyle = value
    End Set
End Property
    
risposta data 13.08.2016 - 23:15
fonte
1

Considerando che questo è un programma che è inestricabilmente collegato a Excel, penso che sia relativamente ragionevole trattare un Excel.ListObject nello stesso modo in cui normalmente tratterebbe un oggetto .Net in questo caso. Ciò detto, non lo faccio pensa che valga la pena aggiungere la complessità per avere un beneficio così piccolo come non aver bisogno di due proprietà separate (ma che non ha nulla a che fare con il fatto che sia un oggetto COM).

    
risposta data 11.05.2017 - 18:36
fonte

Leggi altre domande sui tag