【发布时间】:2020-09-16 16:01:23
【问题描述】:
在使用 .net Core API 项目的 NHibernate .Net 框架中,我有 10 个模型,在保存时使用相同的功能
public static void Save(object saveEntity, ISession session)
{
session.BeginTransaction();
session.Save(saveEntity);
session.FlushMode = NHibernate.FlushMode.Commit;
session.Transaction.Commit();
session.Flush();
}
目前我已经制作了 10 个具有相同结构并返回保存的模型的控制器
[HttpPost]
public ActionResult<ModelName> Post([FromBody]ModelName saveItem)
{
if (saveItem.ID == 0)
Core.DataStore.Repository.Default.Save(saveItem, _session);
else
Core.DataStore.Repository.Default.Update(saveItem,_session);
return saveItem;
}
对 API 的调用如下:
public static async Task<ModelName> Save(ModelName saveItem)
{
using (var client = new HttpClient())
{
System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
client.BaseAddress = new Uri(BaseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(JsonConvert.SerializeObject(saveItem), Encoding.UTF8, "application/json");
using (var response = await client.PostAsync("api/<<ModelName>>/", content).ConfigureAwait(false))
{
var stringResult = (await response.Content.ReadAsStringAsync());
ModelName result = JsonConvert.DeserializeObject<ModelName>(stringResult);
return result;
}
}
}
有什么方法可以让一个 Controller + 函数调用使用通用 T 的控制器
【问题讨论】:
标签: c# api generics controller