我正在为Web API应用程序使用Visual Studio 2013自动生成的XML文档,并且它运行良好,除了具有从List<>继承的业务对象的属性;我从他们那里得到的是"对象的集合。"
例如,这是一个包含OrderLineCollection属性的Order对象:
public class Order
{
public OrderLineCollection Lines { get; set; }
}
public class OrderLine
{
public string OrderNo { get; set; }
}
public class OrderLineCollection : List<OrderLine>
{
public void ReadFromServer(string orderNo)
{}
}
为Order对象生成的文档只有&#34; Object of Object&#34;在Lines属性的Type列中,没有指向OrderLine对象的链接。
如果我改为像这样定义Lines属性,它可以工作(=我得到&#34; OrderLine的集合&#34;在Type列中,OrderLine是超链接的):
public class Order
{
public List<OrderLine> Lines { get; set; }
}
但是,我希望能够使用上面的OrderLineCollection类,以便我可以在那里保留我的集合特定逻辑。我只需要XML文档来说&#34; OrderLine的集合(超链接)&#34;对于Lines属性。
是否有一种简单的方法可以实现这一目标?
答案 0 :(得分:0)
在Web API项目中,打开负责生成帮助页面模型类型名称的类的代码文件:
{MyProject的} /地区/ HelpPage / ModelDescriptions /的 ModelDescriptionGenerator.cs 强>
转到方法:
public ModelDescription GetOrCreateModelDescription(Type modelType)
然后在方法中输入以下代码:
if (modelType.IsEnum)
{
return GenerateEnumTypeModelDescription(modelType);
}
然后在其后面输入以下代码 :
// Force Web API to generate help page model type names like "Collection of {MyType}" instead of "Collection of Object".
if (!modelType.IsGenericType // Model type must not be a generic type.
&& modelType.BaseType != null // Model type must have a base type (i.e. the model type is a derived type).
&& modelType.BaseType.IsGenericType // Model type base type must be a generic type.
&& typeof(IList).IsAssignableFrom(modelType.BaseType)) // Model type base type must implement the IList interface (you can replace "IList" with "IEnumerable" to handle more general collection types).
{
// Set the model type variable to the model type base type and the rest of the method will know what to do.
modelType = modelType.BaseType;
}
我希望这有帮助!