У меня есть код, который я хочу использовать повторно. Для этого мне нужно передать тип DbSet динамически. Как мне заставить это работать?
public virtual DbSet<Runlist> Runlists { get; set; }
public void Method(Type myType)
{
using (var ctx = new FpContext())
{
Type myVariableType = myType;
var table = "myTable";
var sql = ctx.Database
.SqlQuery<myVariableType>("SELECT * FROM @table WHERE (UserId = @userid)"
, new SqlParameter("@userid", user.Id)
, new SqlParameter("@table", table)).ToList();
}
foreach (var r in sql)
{
foreach (XElement e in xmlDoc.Descendants(ns + "RateRequest"))
{
var originCode = e.Element(ns + "RequestedShipment").Element(ns + "Shipper").Element(ns + "Address").Element(ns + "PostalCode");
var postalCode = e.Element(ns + "RequestedShipment").Element(ns + "Recipient").Element(ns + "Address").Element(ns + "PostalCode");
var shipTime = e.Element(ns + "RequestedShipment").Element(ns + "ShipTimestamp");
var serviceType = e.Element(ns + "RequestedShipment").Element(ns + "ServiceType");
var totalWeight = e.Element(ns + "RequestedShipment").Element(ns + "TotalWeight").Element(ns + "Value");
var packageCount = e.Element(ns + "RequestedShipment").Element(ns + "PackageCount");
var weight = e.Element(ns + "RequestedShipment").Element(ns + "RequestedPackageLineItems").Element(ns + "Weight").Element(ns + "Value");
originCode.SetValue(origin);
postalCode.SetValue(r.Zipcode);
shipTime.SetValue(dt);
serviceType.SetValue("FEDEX_GROUND");
totalWeight.SetValue(r.TotalWeight);
packageCount.SetValue(r.BoxCount);
weight.SetValue(r.Weight);
}
xmlDoc.Save(HttpContext.Current.Server.MapPath("~/Requests/SoapRequest_v24.xml"));
}
}
Я опубликовал дополнительный код, чтобы попытаться объяснить больше того, что я пытаюсь выполнить.