[英]How to connect two classes together
我正在制作一個圖庫工具,可以讓您瀏覽和編輯對象。 我有一個'庫' class 管理畫廊列表的獲取和顯示。 我還有一個“ActiveItem”資產,它加載所選 object 的所有信息並處理修改它。
現在,有一些信息存儲在我想在我的活動項中使用的“庫”class(例如文件路徑)中。
我對如何有效地進行設置有點困惑。
我考慮過將活動項 class 嵌入庫 class 中,但是必須通過庫 class 訪問活動項的所有功能和屬性有點煩人(所以我不得不寫 lib.活動項。加載())。 Activeitem 已經深入了 4 個級別,而且變得有點多。
還有其他設置方法嗎? 我可以在活動項 class 中存儲庫 class 實例的引用,以便活動項 class 可以獲取庫實例的屬性嗎?
編輯:添加了一些代碼片段
這是 class 定義:
class Library
{
...
public string LibDirectory;
...
}
class ActiveAsset
{
...
public SaveAsset()
{
//this method needs to know the LibDirectory property of the libraryclass
}
}
在啟動我的 winform 時,我啟動了兩個類:
Library lib = new Library();
ActiveAsset activeAsset = new ActiveAsset();
我建議創建一個包含 Library 和 ActiveItem 實例的包裝器 class 。 因此,您可以使用更通用的方法,例如:
等等。將包裝器 class 視為您的應用程序的管理器。 你只想和那個經理一起工作,不管它下面是什么。
鑒於問題評論中的擔憂,如果您希望 ActiveAsset 能夠從 Library 中讀取信息,您可以更改 ActiveAsset 的構造函數以接收 Library 並將其作為私有 var 在內部存儲。
class ActiveAsset
{
private Library _lib
public ActiveAsset(Library lib) {
this._lib = lib
}
public SaveAsset()
{
// reach lib instance from here
this._lib.LibDirectory
//this method needs to know the LibDirectory property of the libraryclass
}
}
如果您擔心設計和耦合,您可以在庫中創建接口,然后讓構造函數使用它而不是庫 class
interface ILibrary {
string LibDir { get; set; }
}
class Library : ILibrary {
}
class ActiveAsset
{
private ILibrary _lib
public ActiveAsset(Library lib) {
this._lib = lib
}
public SaveAsset()
{
// reach lib instance from here
this._lib.LibDirectory
//this method needs to know the LibDirectory property of the libraryclass
}
}
至於性能和創建深層嵌套類,我認為您不必擔心太多,您可能會在類太多之前遇到數據保存/檢索性能問題。 只有當您嘗試讓您的代碼在 memory 受到限制的小型平台(如 rasberryPi 等)上運行時,這種性能設計才真正重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.