Apakah OK untuk memiliki properti tipe COM objek

8

Saya sedang mengembangkan addin COM untuk Microsoft Excel, menggunakan VB.Net. Saya menulis sebuah kelas untuk mewakili lembar kerja yang berisi elemen-elemen tertentu. Katakanlah misalnya ia memiliki ListObject. Saya membuat properti untuk ListObject seperti ini:

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

Saya kemudian memiliki properti (di kelas MySheet) yang mewakili atribut dari ListObject, misalnya:

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

Alasan saya mengaturnya adalah agar dalam kode utama saya, saya tidak harus memperbarui dua properti setiap kali saya ingin mengubah gaya (properti TableStyle dari kelas MySheet DAN properti TableSTyle dari ListObject). Jadi dalam kode utama saya, saya dapat memiliki:

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

Baris terakhir itu kemudian menyimpan nilai string sebagai properti objek MySheet dan mengubah properti TableStyle dari ListObject di Excel.

Apakah ini OK, atau itu melanggar prinsip pengkodean?

Pengembang Excel
sumber

Jawaban:

1

Anda mungkin memiliki alasan lain untuk "cache" TableStylesecara lokal, tetapi, jika tidak, itu dapat dilihat sebagai "optimasi prematur". Properti dapat diimplementasikan sebagai:

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
Mark Hurd
sumber
1

Menimbang bahwa ini adalah program yang terkait erat dengan Excel, saya pikir itu relatif masuk akal untuk memperlakukan Excel. DaftarObject dengan cara yang sama Anda biasanya memperlakukan objek .Net dalam kasus ini. Dikatakan, saya tidak berpikir itu bernilai kompleksitas tambahan untuk memiliki manfaat yang sangat kecil karena tidak memerlukan dua properti yang terpisah (tapi itu tidak ada hubungannya dengan itu menjadi objek COM.)

kingfrito_5005
sumber