将不同的类型分配给 Class 属性
Assign Different Type to Class Property
我创建了一个 class 来存储来自 API 调用的数据。它 returns JSON 带有一些元信息,然后是一组数据,具体取决于所进行的调用。元信息将始终具有相同的字段,因此我为此创建了一个“根”class,但数据会因调用而异,因此我创建了不同的 classes对于每种类型的数据,例如用户数据、公司数据等。如下所示,我目前将“数据”属性 设置为一个对象列表,但我正在尝试找出合并不同类型数据的最佳方式被退回,因为它会根据所进行的调用而有所不同。
现在我将数据保存为对象列表,但我希望根据接收到的数据进行更改。比如,如果我正在检索用户,我希望它是一个用户列表。
适应这种情况的理想方式是什么?我现在能想到的唯一方法是为我希望收到的每种类型的数据创建一个不同的“根”class,但这并不是最简洁的方法它。我正在考虑将其作为工厂设计模式,但我不确定它是否适合这种情况。
只需使用通用基础 class:
public abstract class ApiCallResult<T>
{
// With your properties
// public int Limit { get; set; }
// [...]
//
public IEnumerable<T> Data { get; set; }
}
然后为每个 api 调用定义一个结果。
public class UserApiCallResult : ApiCallResult<User>
{
}
在这里创建了一个小的工作示例:
dotnet fiddle
我创建了一个 class 来存储来自 API 调用的数据。它 returns JSON 带有一些元信息,然后是一组数据,具体取决于所进行的调用。元信息将始终具有相同的字段,因此我为此创建了一个“根”class,但数据会因调用而异,因此我创建了不同的 classes对于每种类型的数据,例如用户数据、公司数据等。如下所示,我目前将“数据”属性 设置为一个对象列表,但我正在尝试找出合并不同类型数据的最佳方式被退回,因为它会根据所进行的调用而有所不同。
现在我将数据保存为对象列表,但我希望根据接收到的数据进行更改。比如,如果我正在检索用户,我希望它是一个用户列表。
适应这种情况的理想方式是什么?我现在能想到的唯一方法是为我希望收到的每种类型的数据创建一个不同的“根”class,但这并不是最简洁的方法它。我正在考虑将其作为工厂设计模式,但我不确定它是否适合这种情况。
只需使用通用基础 class:
public abstract class ApiCallResult<T>
{
// With your properties
// public int Limit { get; set; }
// [...]
//
public IEnumerable<T> Data { get; set; }
}
然后为每个 api 调用定义一个结果。
public class UserApiCallResult : ApiCallResult<User>
{
}
在这里创建了一个小的工作示例: dotnet fiddle