Có ổn không khi có một thuộc tính loại đối tượng COM


8

Tôi đang phát triển một addin COM cho Microsoft Excel, sử dụng VB.Net. Tôi đã viết một lớp để thể hiện một bảng tính có chứa các yếu tố nhất định. Ví dụ, giả sử nó có ListObject. Tôi tạo một thuộc tính cho ListObject như thế này:

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

Sau đó, tôi có các thuộc tính (trong lớp MySheet) đại diện cho các thuộc tính của ListObject, ví dụ:

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

Lý do tôi thiết lập theo cách này là vì trong mã chính của tôi, tôi không phải cập nhật hai thuộc tính mỗi lần tôi muốn thay đổi kiểu (thuộc tính TableStyle của lớp MySheet VÀ thuộc tính TableSTyle của ListObject). Vì vậy, trong mã chính của tôi, tôi có thể có:

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

Dòng cuối cùng đó sau đó lưu trữ cả giá trị chuỗi dưới dạng một thuộc tính của đối tượng MySheet và thay đổi thuộc tính TableStyle của ListObject trong Excel.

Điều này có ổn không, hay nó phá vỡ một số nguyên tắc mã hóa?

Câu trả lời:


1

Bạn có thể có những lý do khác để "lưu trữ" TableStylecục bộ, nhưng, nếu không, nó có thể được xem là "tối ưu hóa sớm". Các tài sản có thể được thực hiện như:

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

1

Xem xét rằng đây là một chương trình được liên kết chặt chẽ với Excel, tôi nghĩ rằng nó tương đối hợp lý để đối xử với một Excel.ListObject giống như cách bạn thường đối xử với một đối tượng .Net trong trường hợp này. Điều đó được nói, tôi không nghĩ rằng nó đáng để phức tạp thêm vào để có một lợi ích rất nhỏ đến mức không cần hai thuộc tính riêng biệt (nhưng điều đó không liên quan gì đến việc nó là một đối tượng COM.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.