【发布时间】:2013-08-21 21:53:50
【问题描述】:
在 C++ 模板中,您可以将值作为参数传递给 template of a function。如何在 C# 中做同样的事情?
例如,我想做类似以下的事情:
template <unsigned n> struct Factorial {
enum {
result = n * Factorial<n - 1>::result;
};
};
template <> struct Factorial<0> {
enum {
result = 1;
};
};
但在 C# 中。我该怎么做?
顺便说一句,我对它们的实际需求涉及按需生成类(更改了一些静态值),因此提供的代码只是一个示例。
【问题讨论】:
-
这是否等同于通用方法?我对 C++ 一无所知。
-
不,模板允许传入值,而泛型只允许类型。我正在寻找一种解决方法来实现将值作为模板参数传递的相同效果,但在 C# 中(不允许这样做)
-
我看不出这在面向对象的方法中有什么用处。
-
您能否更具体地说明您想要生成哪些类以及为什么?
-
可以在 C#/.Net 中通过 Emit 或 Code Dom 生成类(链接stackoverflow.com/questions/7769287/…)...但是如果您指定您的实际问题(“像克隆 Unity 接口拦截器”),则可能是其他方法。