簡體   English   中英

我應該將命令放在Autocad VB.NET項目的哪里?

[英]Where should I put the commands in an Autocad VB.NET project?

我對Autocad編程非常陌生,還需要幾個月的時間,但是我設法用大約10個Autocad命令編寫了一個應用程序。 這些命令中的大多數都顯示一個窗口,其他所有操作都從該窗口完成。 我試圖使我的應用程序MVVM.ish。 因為我在Models ViewModels視圖和命令之間幾乎有1到1的對應關系,所以我認為將命令放入MVVM的3個部分之一是合適的。 首先,我決定將命令放入ViewModel中,然后我意識到我的命令僅顯示一個窗口,而ViewModel不應該處理窗口,因此將命令移至View的Codebehind。 據我了解,只要代碼與視圖嚴格相關,就可以在代碼后方包含代碼。 然后,我在Autodesk提供的一些教程中了解了CommandClass屬性,發現了這一點:

CommandClassAttribute此自定義屬性類用於將類型標記為應用程序的命令類。 應用程序可以指定一種類型,並且只能指定一種類型作為其命令類。 AutoCAD在具有此屬性的類型上查找應用程序的命令方法。

這表明我應該有一個類來包含所有命令。 然后,我閱讀了此內容,確認了上述內容:

對於實例命令方法,將為每個打開的文檔分別實例化該方法的封閉類型。

因此,我將命令放入視圖或視圖模型的第一種方法是完全錯誤的,因為我將讓視圖模型實例除了運行命令外不執行其他任何操作。 然后,我在ObjectARX的文檔中閱讀了以下內容:

如果應用程序使用CommandClass屬性,則它必須為包含AutoCAD命令處理程序方法的每種類型聲明此屬性的實例。

這直截了當地與上面引用的教程相矛盾,並且還建議擁有多個以上類來處理命令是一種公認​​的實踐。

所有Autocad .NET教程都是具有一個類和一個命令的項目,因此您不必在何處放置很多選擇。

一些經驗豐富的Autocad .NET開發人員是否可以提供一個最佳實踐,或者至少是一個正確的實踐,或者在一個相當大的項目中管理Autocad命令的錯誤實踐?

在我的工作中,我將CommandClass屬性附加到一個類上,如我以前啟動的向導所提供的那樣。

在該命令類中,我放置了所有命令。 每個都帶有CommandMethod屬性。

因此它們沒有附加到任何對象或視圖(我真的認為這只能通過VBA而不是.NET來實現)

但是它們的代碼未寫在其中,我創建了不同的類來管理命令,因此主命令類的工作方式大致類似於命令索引,每個命令在為我自己的目的而創建的不同類中調用其各自的主體。

因此,在您的位置,我可能會使用帶有所有命令的CommandClass樣式制作MyCommands 每個命令僅從下面的ViewCommands類調用命令主體。

創建一個ViewCommands類(還需要許多其他類來簡化模型)。 此類doesn't CommandClass屬性,只有常規方法。 它將具有要從CommandClass方法調用的命令的核心。

我從來沒有嘗試過使用多個CommandClass ,並且我相信最好將所有命令集中在一個地方,以更好地了解外接程序的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM