C#-类类型作为方法中的参数
我使用SQLite.cs包装器来帮助我处理数据库,我有一个从表中创建XML的方法,这个方法很好用C#-类类型作为方法中的参数,c#,C#,我使用SQLite.cs包装器来帮助我处理数据库,我有一个从表中创建XML的方法,这个方法很好用 public void GenerateInvoiceXML(string filePath) { var invoices = app.db.Table<Invoice>().ToList(); XmlSerializer serializer = new XmlSerializer( typeof(List<Invoice>) );
public void GenerateInvoiceXML(string filePath) {
var invoices = app.db.Table<Invoice>().ToList();
XmlSerializer serializer = new XmlSerializer( typeof(List<Invoice>) );
TextWriter writer = new StreamWriter(filePath);
serializer.Serialize(writer,invoices);
writer.Close();
}
但我想将此方法更改为以下内容:
[Serializable]
public class Invoice
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Supplier {get; set;}
public string Date {get; set;}
public string PaymentMethod {get; set;}
public string Notes {get; set;}
public Invoice(int newID)
{
Id = newID;
}
public Invoice()
{
}
}
public void GenerateInvoiceXML(string filePath, Type table) {
var dataForXML = app.db.Table<table>().ToList();
XmlSerializer serializer = new XmlSerializer( typeof(List<table>) );
TextWriter writer = new StreamWriter(filePath);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
public void GenerateInvoiceXML(字符串文件路径,类型表){
var dataForXML=app.db.Table().ToList();
XmlSerializer serializer=新的XmlSerializer(typeof(List));
TextWriter writer=新的StreamWriter(文件路径);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
有人知道怎么做吗
亲切的问候,克劳迪奥试试这个:
public void GenerateInvoiceXML<TTable>(string filePath) {
var dataForXML = app.db.Table<TTable>().ToList();
XmlSerializer serializer = new XmlSerializer( typeof(List<TTable>) );
TextWriter writer = new StreamWriter(filePath);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
public void GenerateInvoiceXML(字符串文件路径){
var dataForXML=app.db.Table().ToList();
XmlSerializer serializer=新的XmlSerializer(typeof(List));
TextWriter writer=新的StreamWriter(文件路径);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
为了传递泛型类型参数,您必须能够在编译时指定它-为了做到这一点,您必须使您的GenerateInvoiceXML
方法具有泛型性,如我上面所示。您可以尝试以下方法:
public void GenerateXML<T>(string filePath)
{
var dataForXML = app.db.Table<T>().ToList();
XmlSerializer serializer = new XmlSerializer( typeof(List<T>) );
TextWriter writer = new StreamWriter(filePath);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
public void GenerateXML(字符串文件路径)
{
var dataForXML=app.db.Table().ToList();
XmlSerializer serializer=新的XmlSerializer(typeof(List));
TextWriter writer=新的StreamWriter(文件路径);
serializer.Serialize(writer,dataForXML);
writer.Close();
}
+1:如果app.db.Table有任何约束(很可能),您还需要将这些约束添加到此方法中。非常感谢。你知道这方面的任何网站/参考资料,我可以阅读更多吗?我在这方面遇到了很多问题,甚至不知道如何搜索。这是我在Jon Skeet的《C深入》中读到的关于C#泛型的最好描述/讨论:。不幸的是,我不知道有任何免费/在线的等价物-买这本书,你不会后悔的。