2012-04-25 132 views
1

我有這個類的定義:指定約束泛型類是一個子類?

public abstract class AbstractListViewModel<T> : AbstractWorkspaceViewModel 

所以我有一個叫AbstractListViewModel具有泛型類型類,那就是AbstractWorkspaceViewModel一個子類。

但是,我需要約束T只能是AbstractWorkspaceViewModel的子類。我嘗試了以下方法:

public abstract class AbstractListViewModel<T> where T : 
    AbstractWorkspaceViewModel, : AbstractWorkspaceViewModel 
public abstract class AbstractListViewModel<T> where T : 
    AbstractWorkspaceViewModel : AbstractWorkspaceViewModel 

但是,此語法無效。

所以在這裏我想說「之稱AbstractListViewModel一類是AbstractWorkspaceViewModel一個子類,並有一個通用的類型也是AbstractWorkspaceViewModel一個子類。

如何定義呢?

+0

你的班級名稱令人難以置信的困惑。 – asawyer 2012-04-25 12:39:29

+0

@asawyer我可能應該改變他們的問題。它們在上下文中有意義。 – Oliver 2012-04-25 12:44:46

回答

6

這是你的約束的順序試試這個:

public abstract class AbstractListViewModel<T> : AbstractWorkspaceViewModel 
    where T : AbstractWorkspaceViewModel 
3

你要這樣:

public abstract class AbstractListViewModel<T> : AbstractWorkspaceViewModel 
    where T : AbstractWorkspaceViewModel 
2
public abstract class AbstractListViewModel<T> : AbstractWorkspaceViewModel where T : AbstractWorkspaceViewModel