2012-08-27 22 views
1

我想是這樣的:如何添加2個new()約束來輸入參數?

public static TTo JumpTo<TFrom, TTo>(this TFrom from_page) 
     where TTo : new() TFrom : new() 
{ 
    ... 
} 

我要強制執行TFrom和TTO都從一個基類派生。

而且我想使這種方法成爲的TFrom類型的擴展方法

可能嗎?什麼是正確的語法?

+2

@ AD.Net:您的觀點與這種需求?編輯:那不會編譯。 – leppie

+0

順便說一句,對輸入參數的'new'約束沒有任何意義,除非你在內部複製東西。 – leppie

+0

@ AD.Net:這聽起來更像VB.NET,除了在VB.NET中,它會是'作爲SomeType,TFrom作爲SomeOtherType'所以實際上根本就不是 – Ryan

回答

9

在每種類型之前放置關鍵字where

public static TTo JumpTo<TFrom, TTo>(this TFrom from_page) 
    where TTo : SomeBaseType, new() 
    where TFrom : SomeOtherBaseType, new() 
{ 
    ... 
} 
+0

謝謝,我想將JumpTo作爲TFrom的**擴展方法**。可能嗎? – smwikipedia

+0

@smwikipedia:你的編輯就是這麼做的!你添加到一個靜態類。 – leppie

+0

@smwikipedia是的,你可以使它成爲一個擴展方法。 – cadrell0