給定類像System.Timers.Timer,或任何託管類(無論用戶定義,從.net框架,或一些第三方庫)是否有一些程序可以用來(a)基於這個類生成一個接口,(b)爲給定的類生成一個包裝器?是否有一個工具,我可以用它來生成接口和包裝對象嘲笑在c#
例如,如果我有一個
public class Foo
{
public object MyProperty { get { ... } set { ... } }
public int SomeMethod(object a) { ... }
}
它會創建一個接口
interface IFoo
{
object MyProperty { get; set; }
int SomeMethod(object a) { ... }
}
,甚至包裝
class FooWrap
{
// something for relay constructor here
...
Foo _me;
public object MyProperty { get { return _me.MyProperty; } set { _me.MyProperty = value; } }
public int SomeMethod(object a) { return _me.SomeMethod(); }
}
顯然有東西,我還沒有想過像事件,泛型等。我想要一個DWIMNWIS-PSICHTO(-Plus-Stuff -I-Clearly-Haven'-Thought-Of)。
我知道resharper/vs可以用來提取一個接口,但我只能用在我自己的類上。
另外:令人驚訝的是,簡單地習慣以前「不可接受」的想法最終會給它帶來合法性。一年前,不得不爲所有想要模擬和採用注入框架的對象創建接口的想法看起來像是瘋狂的高度。事實證明,雖然它不是死亡和稅收,但它是sparta。
我意識到並使用了typemock。這當然是精靈巫師的工作。有一天,800美元似乎不是我想要購買的那麼多錢。
有關的? http://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use – Charles 2010-04-20 02:49:41
如果還不存在,它會成爲一個不錯的開源項目。你如何處理像'void Process(Processor p)'這樣的依賴項,包裝生成器是否應該將該方法轉換爲'void Process(IProcessor p)'?在任何情況下,Visual Studio的「Extract Interface」都可以運行得很好:) – Juliet 2010-04-20 02:50:25
@Juliet - 對我來說還不夠好。我希望能夠爲例如System.Timers.Timer或我的代碼之外的其他類。 – fostandy 2010-04-20 03:18:48