J'utilise le moteur de vue Razor pour restituer du code HTML qui sera ensuite intégré à un document XML. la classe de base que j'utilise a un certain nombre de propriétés, ainsi qu'une méthode statique qui retournera une liste de cet objet (en utilisant Dapper pour remplir la liste). J'ai de la difficulté à exécuter la méthode puisqu'elle doit retourner la classe de base, qui est une classe abstraite. Un exemple de code est ci-dessous.Razor View Engine dans l'application Console avec la classe Bass complexe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dapper;
using System.Data.SqlClient;
using System.Configuration;
using System.ComponentModel;
using System.IO;
namespace LocalBranchesPOC
{
public abstract class PersonData : TemplateBase
{
#region Properties
public string RecordId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string County { get; set; }
public string State { get; set; }
public string Country { get; set; }
public string Zip { get; set; }
public string Phone { get; set; }
public string Variable1 { get; set; }
public string Variable2 { get; set; }
public string Variable3 { get; set; }
#endregion
public static List<PersonData> GetPeople()
{
const string QUERY = "SELECT [RecordId], [Name], [Address], [City], [County], [State], [Country], [Zip], [Phone], [Variable1], [Variable2], [Variable3] FROM Data.Person";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BranchLocator"].ConnectionString))
{
return getPeople(QUERY, conn);
}
}
private static List<PersonData> getPeople(string QUERY, SqlConnection conn)
{
conn.Open();
var result = conn.Query<PersonData>(QUERY).ToList();
conn.Close();
return result;
}
}
public abstract class TemplateBase
{
[Browsable(false)]
public StringBuilder Buffer { get; set; }
[Browsable(false)]
public StringWriter Writer { get; set; }
public TemplateBase()
{
Buffer = new StringBuilder();
Writer = new StringWriter(Buffer);
}
public abstract void Execute();
// Writes the results of expressions like: "@foo.Bar"
public virtual void Write(object value)
{
// Don't need to do anything special
// Razor for ASP.Net does HTML encoding here.
WriteLiteral(value);
}
// Writes literals like markup: "<p>Foo</p>"
public virtual void WriteLiteral(object value)
{
Buffer.Append(value);
}
}
}
Fondamentalement, mon appel à PersonData.GetPeople()
échoue parce que la classe persondata est abstraite. Toute réflexion sera apprécié. J'utilise l'exemple de here comme guide.
Je pense que vous avez raison. Y a-t-il une chance que vous sachiez où je peux voir un exemple de code? – CodeMonkey1313
On dirait que si j'aurais utilisé le RazorEngine de Nuget j'aurais pu me sauver beaucoup d'ennuis :) – CodeMonkey1313
Oui. J'avais en fait supposé que tu l'utilisais déjà. – SLaks