【发布时间】:2018-11-28 15:33:10
【问题描述】:
我有一系列非常相似的方法:
private static DocumentBody GetPdfBodyObject(int sectionId)
{
DocumentBody db = new DocumentBody();
// Add some stuff to Db
return db;
}
private static DocumentHeader GetPdfHeaderObject(int sectionId)
{
DocumentHeader dh = new DocumentHeader();
// Add some stuff to DH - similar to above
return dh;
}
等等……
如您所见,这两个示例之间的区别在于被实例化和返回的类型。
所以我立刻想到使用通用方法来减少代码重复......我似乎无法弄清楚哪种方法是“最佳实践”,我可以在不使用反射的情况下获得我需要的东西吗?
我根本没有使用过泛型方法,所以欢迎任何建议。
【问题讨论】:
-
似乎您可以使用工厂,假设您的所有类型都继承自一个公共基类或实现一个公共接口。但我不确定标题和正文有什么共同点......
-
您实际上可以尝试使方法通用并使用 Activator 类(请参阅:docs.microsoft.com/pl-pl/dotnet/api/…)来创建适当的实例。不过,工厂听起来对我来说是个更好的主意
-
上述 cmets 暗示的部分有多相似?
DocumentBody和DocumentHeader是否共享任何公共接口/基类? -
他们目前没有,但他们很快就会。此代码序列严格只更新公共属性,因此将完成并测试其中的一些想法。
标签: c# generics reflection types