細節決定成敗 乙個公共類庫

2022-01-12 08:01:29 字數 2605 閱讀 8417

cli缺憾之一:公共體系結構定義

hierarchical structure

是一種應用極其廣泛的資料結構

(樹結構

),其意義完全可以和

collection

結構相提並論。可是

.net framework

的cli

提供了collection

卻沒有提供

hierarchy

。絕大部分情況下,你可以通過其它方式

(例如配合集合再定義一些介面

)來實現,但是不能否認這些實現都很受侷限,並且存在一些明顯不合理的依賴。我在實現業務邏輯的時候,想通過某種方式通知表現層通過

hierarchy

的方式來處理。而表現層是通過乙個實現

hierarchical structure

的公共控制項實現的

(這樣的情況在

.net

下非常普遍

),沒有理由要依賴我特定的業務層。

我所期望的

hierarchy

服務至少應該提供兩個介面和乙個基類:

之所以我覺得這個服務應該由

cli提供,很簡單的理由,這些結構應用非常普遍,完全應該是一種公共的、基本的依賴。

我設計的

hierarchy

服務在kanas.hierarchizations

命名空間,除了以上介面和基類外,還提供了乙個服務類和兩個將普通型別包裝成

hierarchical

結構的介面。

應用場景:選單,視覺化的樹檢視,目錄體系、組織結構、財務科目、詞典類,等等等等。

cli缺憾之二:視覺化框架

.net

提供的propertygrid

是visual studio.net

設計時支援的基礎,為此,

microsoft

為.net

的propertygrid

提供了極其強大的擴充套件能力。

componentmodel

命名空間下的很多態別及屬性都提供了對編輯器、設計器、型別轉換器的支援。不過很顯然地,其中存在一些設計漏洞,例如沒有提供足夠的抽象,直接導致了某些不必要的侷限。其後果一是所有提供設計時支援的

attribute

都幾乎只能應用於

propertygrid

,讓執行時型別揹負設計時支援的包袱顯然有種職責不清的嫌疑;其後果二是

propertygrid

只提供了下拉和彈出兩種模式的型別編輯,當然目前是夠用的,但不能保證任何時候都夠用。

現如今我就遇到這個問題。

typeconverterattribute

和typeeditorattribute

這兩個屬性就必須進行

web架構的擴充套件而不是完全依賴

windowsforms

。直觀的感覺是,設計時特徵依賴執行時特徵是合理的,相反則不合理。當然,設計時

attribute

在執行時沒有任何意義,也不會給執行時帶來額外的效能問題。可是,為什麼不能將設計時

attribute

設計成更好的模型?例如可以設計成侵入式或者附加式。

我設計的物件設計時服務在

kanas.objectscope

命名空間,採用的是附加式策略。當需要在執行時使用類似設計時服務的功能時便可以更靈活地使用。這個服務是基於乙個

xml的

schema

,將物件的探查或展示方案部署到相應的配置檔案中,執行時根據這些配置獲得設計時支援。與

componentmodel

的設計思想一樣,這一套服務應該包括公共定義(契約

)、配置提供器(服務

)、物件展示及編輯(消費

)三部分。

定義部分包括乙個

xsd(

設計成component

以備設計時使用

)、三個不同配置方案的實現

(分別實現對

xml配置檔案、

xml配置資源和全域性配置檔案節三種配置方式

)。物件的展示是表現層的事情,本套服務不需要實現。不過在本套服務中,通過配置的資料轉換器介面實現了從物件集合到資料集的自動轉換,分別是

kanas.common

命名空間中的

typebounddatatable

和listdatatable

。兩者的區別是:前者不依賴

scope

方案,單純實現

icollection

到datatable

的轉換;後者是前者的派生,可以通過

scope

方案影響

datatable

的生成。

當然,這個方案也存在很大的侷限,甚至顯得非常粗糙。不過就其擺脫消費依賴來說還是有意義的。當然,眼下只實現了對

property

的配置,缺乏對實現對

invocation

及event hook

的擴充套件,也缺乏對更詳細的視覺化屬性(例如

componentmodel

中的categoryattribute)

的定義。

這就是這個簡陋的

schema

:這個實現,如果需要原始碼請來信索取。

細節決定成敗,態度決定一切

背景 前天也就是周五5點30 9點自己在家看 c 從入門到精通 這邊書,9點10分的時候去機房跟周四值班的童鞋進行交 剛一到機房就聽到有些同學說公尺老師早上8點的時候,去每乙個屋子關心了一下大家學習的環境,並且拍照記錄了一下我們每一位同學的學習環境,拍了好多張 當時自己心想著,嗯,應該要有什麼事情發...

讀書心得一 細節決定成敗 基礎決定命運

最近一直在讀一本書 做人做事做到位 東方出版社出版,李偉譯。是韓老大推薦我看的一本書。對我起了很大的幫助。今天就把在讀書的時候一些心得和大家分享一下。在書的前言中說,無論什麼事情,基礎都很重要。如果掌握不了基礎,本應該成長的人也成長不起來。在體育或者遊戲乃至工作中,基礎和規則一樣重要。在就這一段話發...

態度決定一切,細節決定成敗 12 21總結

又到了一周寫部落格的時候,這一周毫無收穫,在小組的學習效率非常低,越到了要努力的時候,自己卻越加的懶散,這個臭毛病必須得改。後端第一次考核也結束了,這次考核完成的非常不好,由於某些原因,自己並沒有將全部心思放在考核上,匆匆完成了考核的專案,但並沒有針對專案中存在的問題去進行修改,而是去做了別的事情。...