C# 使用类名作为方法参数和返回类型
我有一个扩展方法用于反序列化C# 使用类名作为方法参数和返回类型,c#,C#,我有一个扩展方法用于反序列化XDocument 我使用CarConfiguration作为此方法中的变量,但我有另一个类配置: public static CarConfiguration Deserialize(this XDocument xdoc) { XmlSerializer serializer = new XmlSerializer(typeof(CarConfiguration)); using (StringReader reader = new String
XDocument
我使用CarConfiguration
作为此方法中的变量,但我有另一个类配置:
public static CarConfiguration Deserialize(this XDocument xdoc)
{
XmlSerializer serializer = new XmlSerializer(typeof(CarConfiguration));
using (StringReader reader = new StringReader(xdoc.ToString()))
{
CarConfiguration cfg = (CarConfiguration) serializer.Deserialize(reader);
return cfg;
}
}
class CarConfiguration
{
//car
}
class BikeConfiguration
{
//bike
}
因此,这里有两个问题:
static CarConfiguration Deserialize(this XDocument xdoc, class classname) {
var serializer = new XmlSerializer(typeof(classname));
CarConfiguration x = xmlDocument.Deserialize<CarConfiguration>();
CarConfiguration
,BikeConfiguration
等)?我的意思是,例如,返回类型对输入类的依赖性:
static <classname> Deserialize(this XDocument xdoc, class classname) {
静态反序列化(此XDocument xdoc,类名){
您问题中的关键词是
generic
,因此您可以通过使用来实现这一点。例如:
public static T Deserialize<T>(this XDocument xdoc)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader reader = new StringReader(xdoc.ToString()))
{
T cfg = (T) serializer.Deserialize(reader);
return cfg;
}
}
公共静态T反序列化(此XDocument xdoc)
{
XmlSerializer serializer=新的XmlSerializer(typeof(T));
使用(StringReader=newStringReader(xdoc.ToString()))
{
T cfg=(T)序列化程序。反序列化(读取器);
返回cfg;
}
}
现在你这样称呼它:
static CarConfiguration Deserialize(this XDocument xdoc, class classname) {
var serializer = new XmlSerializer(typeof(classname));
CarConfiguration x = xmlDocument.Deserialize<CarConfiguration>();
CarConfiguration x=xmlDocument.Deserialize();
太好了!我知道它一定很简单,但不知道该用什么:)谢谢。