没有特定类型的剃刀引擎模板解析
razor engine template parse without specific type
有没有办法在不声明 typeof(someType)
的情况下 RunCompile()
Razor 引擎模板?
我想避免使用像这样的多种方法:
public static string EvalueateLineChartModelTemplate(d3LineCharts.LineChartModel model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(d3LineCharts.LineChartModel), model);
return result;
}
public static string EvalueateAreaChartModelTemplate(d3AreaCharts.AreaChartModel model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(d3AreaCharts.AreaChartModel), model);
return result;
}
如何将这两个方法组合成一个更通用的方法,以便我仍然可以用不同的类型调用它?谢谢!
你可以像这样创建一个通用方法:
public static string EvaluateTemplate<T>(T model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(T), model);
return result;
}
然后您可以像调用特定类型版本一样调用泛型方法:
d3LineCharts.LineChartModel lineChartModel = new d3LineCharts.LineChartModel();
string result = EvaluateTemplate(lineChartModel, cssResourceName, tempKey);
这个怎么样:
public static string EvalueateChartModelTemplate<T>(T model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(T), model);
return result;
}
您的电话将如下所示:
var result1 = EvalueateChartModelTemplate<d3LineCharts.LineChartModel>(lineChartModel, lineChartResourceName, lineChartKey);
var result2 = EvalueateChartModelTemplate<d3LineCharts.AreaChartModel>(areaChartModel, areaChartResourceName, areaChartKey);
我在方法调用(<d3XXXCharts.XXXChartModel>
部分)中保留了通用参数只是为了让您清楚发生了什么,但这当然是多余的,因为编译器可以从模型中推断出方法调用的参数。
有没有办法在不声明 typeof(someType)
的情况下 RunCompile()
Razor 引擎模板?
我想避免使用像这样的多种方法:
public static string EvalueateLineChartModelTemplate(d3LineCharts.LineChartModel model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(d3LineCharts.LineChartModel), model);
return result;
}
public static string EvalueateAreaChartModelTemplate(d3AreaCharts.AreaChartModel model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(d3AreaCharts.AreaChartModel), model);
return result;
}
如何将这两个方法组合成一个更通用的方法,以便我仍然可以用不同的类型调用它?谢谢!
你可以像这样创建一个通用方法:
public static string EvaluateTemplate<T>(T model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(T), model);
return result;
}
然后您可以像调用特定类型版本一样调用泛型方法:
d3LineCharts.LineChartModel lineChartModel = new d3LineCharts.LineChartModel();
string result = EvaluateTemplate(lineChartModel, cssResourceName, tempKey);
这个怎么样:
public static string EvalueateChartModelTemplate<T>(T model, string cssResourceName, string tempKey)
{
string template = StreamEmbeddedResource(cssResourceName);
string result = Engine.Razor.RunCompile(template, tempKey, typeof(T), model);
return result;
}
您的电话将如下所示:
var result1 = EvalueateChartModelTemplate<d3LineCharts.LineChartModel>(lineChartModel, lineChartResourceName, lineChartKey);
var result2 = EvalueateChartModelTemplate<d3LineCharts.AreaChartModel>(areaChartModel, areaChartResourceName, areaChartKey);
我在方法调用(<d3XXXCharts.XXXChartModel>
部分)中保留了通用参数只是为了让您清楚发生了什么,但这当然是多余的,因为编译器可以从模型中推断出方法调用的参数。