我在C#中工作,我有一個任務,我會用C++使用模板類來解決。但是,我不能使用C#泛型,因爲傳入模板的類型不會從單個基類繼承或實現通用接口。C#中的按需編譯時代碼生成
現在我正在使用T4爲每種類型生成單獨的代碼,但是我希望這會在編譯時自動發生,這取決於我編寫的代碼,而不是在文本模板中手動維護列表文件。
在文本模板轉換工具包中是否有語法,實際上可以用模板在C++中的工作方式?
編輯:
比方說,我有這個TT文件:
<# string[] typeNameStrings = new string[2] {"Vector2d", "Vector3d"};
foreach (string s in substitutions)
{ #>
public class SumCalculator<#= s #>
{
public <#= s #> sum;
public SumCalculator<#= s #>(<#= s #> a, <#= s #> b)
{
sum = a + b;
}
}
<# } #>
我不想保持陣列typeNameStrings
,然後使用生成的類SumCalculatorVector2d
,SumCalculatorVector3d
等相反,我希望儘可能接近C++模板功能(即SumCalculator<WhateverClass>
)。我怎麼做?
泛型不是模板。你遇到過這種情況。代碼將在這裏幫助。我的感覺是,你正在嘗試在C#中編寫C++,並且可能會根據你的工作方式做出更好的選擇。很難說沒有合理的定製細節。 –
感謝您的建議。我已經添加了一個代碼示例。 –
你已經說過這些類不共享一個通用接口,但你認爲他們有一個'+'運算符。這聽起來像是我的一個共同界面。在C#或C++中,我期望將這些東西存儲在一個容器中,並且在它們上面應用一個函數而不是您指定的方法。我的技術可能太有限,無法在這裏幫忙。祝你好運。 –