2008-11-07 35 views
0

我有一個對象實例,我訪問與ME訪問實例化對象。我有一個方法獲取這些對象的集合,我希望將第一個分配給實例化的對象。VB.NET - 我如何分配一個對象到一個對象實例(更好的描述裏面)

這是一些代碼

Dim Books As New BookCollection(True) 
Books.ListByThemeFeatured(ThemeID, 1) ' Fills the collection 

If Books.Count > 0 Then 
    Me = Books(0) ' Should set the first item to the current object 
End If 

的是這可能嗎?

編輯:我指的是被實例化的類。在這種情況下,它是一個BookEntity類。該方法本來會被稱爲使用以下代碼

Dim Book As New BookEntity 
Book.FeaturedBook() ' Should fill the book entity with a featured book 

回答

0

你不能。什麼你要找的是一個靜態(在VB中共享)方法:

Dim Book as BookEntity 
Book = BookEntity.FeaturedBook() 
0

因爲你嘗試更換你沒有手柄的對象實例這似乎是不可能的。一個選擇可能與圖書(0)一樣的值來替換當前的Book實例中的所有成員:

Me.ConstructMeFrom(Books(0)) 

凡ConstructMeFrom替換所有書籍的領域:

Sub ConstructMeFrom(Book newBook) 
    Me.Title = newBook.Title 
    Me.PageCount = newBook.PageCount 
    'etc 
End Sub 

或者你可以設計一些方法來修改保存您的實例的句柄的值。對於例如你可以使用一個委託來代替另一個實例本身。我不熟悉VB語法,但這裏是它如何會在C#來完成:

public class Book 
{ 
    public delegate void Replacer(Book book); 

    public void ReplaceMe(Replacer replacer, Book newBook) 
    { 
     replacer(newBook); 
    } 

    public int PageCount; 
} 

static void Main(string[] args) 
{ 
    Book b1 = new Book() { PageCount = 3 }; 
    Book b2 = new Book() { PageCount = 5 }; 
    b1.ReplaceMe(book => b1 = book, b2); 
    Console.WriteLine(b1.PageCount); // Output is 5. 
} 

更新:使用您更新例如

C#示例:

FeaturedBook(Replacer replacer) 
{ 
    Book featuredBook = FindTheFeaturedBookFromSomeList(); 
    replacer(featuredBook); 
} 

現在做這個:

BookEntity Book; 
Book = BookEntity.FeaturedBook(delegate(BookEntity b) { Book = b; }); 
+0

我正試圖避免因爲房產一直在變化而不得不手動編碼這類事情。 – 2008-11-07 09:14:37

0

要麼使用子

public sub FeaturedBooks() 
    dim FB as Book = GetFeaturedBook() 
    CopyToMe(FB) 
end sub 

private shared sub CopyToMe(Abook as book) 
    Me.Bookname = aBook.BookName 
    etc 
end sub 

或有一個共同的功能,這樣你寫:

Dim Book as BookEntity = BookEntity.FeaturedBook() 


Class BookEntity 

Public shared function FeaturedBook() as BookEntity 
    Dim NewBook as BookEntity 
    Get the featured book into here... 

    return NewBook 
end function 

end class 
0

我很抱歉,但一些「味道不好」關於代碼...爲什麼你需要替換當前BookEntity目的?您的代碼看起來在做一些應該在BookEntity範圍之外的事情。

相反,我認爲你應該有一個像BookDisplayer這樣的類,它有一個CurrentBook屬性來處理顯示新書所需的邏輯。當然,假設這就是你想要完成的。

編輯

好像下面的代碼示例:

Book.FeaturedBook() ' Should fill the book entity with a featured book 

應該是這樣的,與FeaturedBook邏輯居住在BookCollection類,而不是:

Book = Books.GetFeaturedBook() 
' NOW perform display logic 
相關問題