c# - 泛型类与泛型方法
问题描述
我正在设计一个能够反序列化某些文件的类,我想知道这两个选项的含义是什么:
// option 1 - generic class
public class XmlConfigurationManager<T>
{
public T ReadConfigurationAndWriteDefault(string configurationPath, Func<T> defaultConfiguration)
{
...
}
public T Deserialize(string configurationPath)
{
...
}
}
// option 2 - generic methods in non generic class
public class XmlConfigurationManager
{
public T ReadConfigurationAndWriteDefault<T>(string configurationPath, Func<T> defaultConfiguration)
{
...
}
public T Deserialize<T>(string configurationPath)
{
...
}
}
我似乎找不到任何关于两者之间差异的暗示。
这两个选项如何比较?会有什么不同吗?在评估设计时,有什么值得注意的地方需要记住吗?
解决方案
我马上就能想到一个区别:
- 通用类:您必须为要反序列化的每种类型的文件实例化具有某种类型的对象。尽管如果您长期使用实例,您将能够保留特定于类型的参数。
- 泛型方法:您将实例化该类一次,并将泛型方法用于您想要的任意数量的类型(假设您将处理类型的差异,如果有的话)。
例如,如果您想简单地将文件 (json) 的内容反序列化为对象,则泛型方法就足够了,因为所需的类型不会改变任何内容。
推荐阅读
- powershell - 如何查找具有名为“Intro”和文件类型 *.mp4 的文件夹的所有文件夹
- mongodb - mongodb系统当前日期(yyyy-mm-dd)
- elasticsearch - 如何通过弹性搜索中的术语匹配多个单词
- bash - 如果目录不为空,如何移动文件?
- oracle - 在 oracle 查询中使用带有更新的案例
- c# - 从 sqlite 数据库性能初始化 c# 对象的最佳实践是什么
- jasper-reports - 如何将参数传递给 IReport 中的数据集?
- angular - JHipster - 用新的角度模板替换默认模板
- reactjs - React - 表单中的依赖字段
- javascript - 通过使用在每个子数组的第一个元素中找到的子字符串作为键来组合子数组