我有一個T4模板系統 - 在運行時執行,而不是在編譯時生成許多類的骨架在我的應用程序。所有這些模板都駐留在生成器工具中,該工具不時用於預先生成新類到目標應用程序中。該工具包含一個配置類,其屬性參數化所有T4模板的輸出。從定製基類繼承T4模板,未提供Visual Studio 2010 SDK
原來配置類是一個靜態類。但是,隨着類生成器工具的增長,最好將其設置爲非靜態,併爲每次使用創建一個新實例。問題是如何將這個實例傳遞給T4模板的實例。自然的方式似乎是從一個共同的基礎繼承它們,它將配置類實例。
問題是TextTransformation
類可能會被我的自定義T4基類繼承,它位於一個程序集中(根據來源如this SO question)不隨Visual Studio 2010提供。相反,它提供在Visual Studio 2010 SDK。
由VS2010生成的基類雖然本身沒有祖先,但不是部分的,所以沒有辦法通過另一個部分聲明'注入'自定義祖先。
因此問題是:有沒有辦法從定製基類中繼承運行時執行的T4模板而不需要安裝Visual Studio 2010 SDK?
免責聲明:我對T4並不是很熟悉,所以我可能完全錯在如何解決問題。因此,歡迎任何其他建築方面的建議,儘管我的目標不是創建一個超級架構的生成器 - 它只是一個輔助工具,對偶爾的讀者來說應該是簡單易懂的。
這很好,但可能應該指出,它只適用於預先校準的模板作爲基類。 – GarethJ 2011-01-21 22:09:23
@GarethJ是的,你是對的,我沒有在我的原始問題中指出 - 我正在使用預編譯模板。 – 2011-01-21 22:13:34