【发布时间】:2019-06-10 17:01:10
【问题描述】:
我从列表的泛型版本继承以向 asp.net 核心中的另一个泛型类添加一些属性,然后我有一个接收对象参数的方法。在框架工作流程的某个点,它将我的类转换为对象并将其传递给此方法。因此,我需要将对象转换或解析为我继承类的特定类。
public class ClassList<T> : List<T>
{
public int SomeProperty {get; set;}
....
}
public void SomeMethod(object value){
}
我需要将 SomeMethod 方法中的对象转换为我创建的泛型类的特定类型。
类似这样的:
ClassList<OtherClass> otherList = (ClassList<OtherClass>) object;
问题是如何知道泛型类型的类型以及如何在运行时将对象转换为该类型?
【问题讨论】:
-
99% 的情况下,了解
value类型的最佳方法是将SomeMethod(object value)更改为SomeMethod(SomeSpecificType value)。现在你知道value是什么类型了。这是SomeSpecificType。会有其他字面(和正确)的答案告诉你如何做你所要求的,但你可能会从了解为什么这不是一个好问题以及如何避免在第一名。 -
SomeMethod是JsonConverter的WriteJson方法。我不能更改签名。我正在尝试将自定义转换器制作为 API。
-
请参考这个问题:stackoverflow.com/questions/266115/… 但请记住反射可能会影响代码的性能。
-
这可能有助于澄清问题 - 并添加更多代码 - 以便有人可以可视化您所描述的类之间的关系。使用一个类、一种方法和一行代码,很难将您所描述的内容拼凑起来。我并不是说这些信息不存在,但它需要有人阅读它几次,然后猜测哪个代码引用了问题的哪个部分,并且可能猜错了。
标签: c# generic-list