我在类的方法中有以下代码:
XmlSerializer serializer = new XmlSerializer(typeof(FooClass));
如何传入构造函数或类的参数--foo类?
我认为它与反射有关,因为你不能仅仅作为参数传递一个类名 - 所以下面的代码有点意义(感谢Aidan) -
XmlSerializer serializer = new XmlSerializer(Type.GetType("namespace.FooClass"));
答案 0 :(得分:1)
void serializeme(Object o) {
Type t = o.GetType();
XmlSerializer serializer = new XmlSerializer(t);
...
}
答案 1 :(得分:1)
如果我理解你的问题,你想要这个:
class YourClass {
Type type;
public YourClass(Type type) {
this.type = type;
}
public XmlSerializer Method() {
return new XmlSerializer(type);
}
}
...
new YourClass(typeof(Foo));
答案 2 :(得分:0)
这样做你想要的吗?
XmlSerializer serializer = new XmlSerializer(foo.GetType());
答案 3 :(得分:0)
在方法中添加一个类型参数:
public XmlSerializer Method<T>()
{
return new XmlSerializer(typeof(T));
}
然后您将该方法称为Method<Foo>();
答案 4 :(得分:0)
考虑这段代码:
Type t = foo.GetType();
XmlSerializer fooSerializer = MakeSerializer(t);
...
private XmlSerializer MakeSerializer(Type myType)
{
XmlSerializer serializer = new XmlSerializer(myType);
return serializer;
}
答案 5 :(得分:0)
你会用反射来达到你想做的(我相信)。
您将使用XmlSerializer构造函数的XmlSerializer(Type)覆盖。
XmlSerializer serializer = new XmlSerializer(Type.GetType("namespace.Foo"));
或
XmlSerializer serializer = new XmlSerializer(fooInstance.GetType());
取决于您手头是否有该类型的实例。
答案 6 :(得分:0)
据我所知,你必须在XmlSerializer中使用无参数构造函数。所以XmlSerializer将使用的唯一foo构造函数是:
public foo()
{
}