定义一种通用变量,用于引用两个不同的实体
本文关键字:两个 引用 实体 一种 定义 变量 用于 | 更新日期: 2023-09-27 18:08:10
我有一些具有相同属性的模型类(RevisedDate
&RevisedBy
):
public class Request
{
public int RequestId { get; set; }
...
public DateTime RevisedDate { get; set; } <---
public User RevisedBy { get; set; } <---
}
public class Material
{
public int MaterialId { get; set; }
...
public DateTime RevisedDate { get; set; } <---
public User RevisedBy { get; set; } <---
}
现在我有以下代码:
if (entry.Entity is Request)
{
Request request = (Request)entry.Entity;
ctx.LoadProperty(request.RevisedBy, x => x.Roles);
if (request.RevisedBy.Roles.Find(x => x.RoleName == "ADMIN") == null) return;
}
if (entry.Entity is Material)
{
Material material = (Material)entry.Entity;
ctx.LoadProperty(material.RevisedBy, x => x.Roles);
if (material.RevisedBy.Roles.Find(x => x.RoleName == "ADMIN") == null) return;
}
我的问题:是否有可能组装这两个代码并做一些像这样的通用代码:
if (entry.Entity is Request|| entry.Entity is Material)
{
var myEntity = entry.Entity;
ctx.LoadProperty(myEntity.RevisedBy, x => x.Roles);
if (myEntity.RevisedBy.Roles.Find(x => x.RoleName == "ADMIN") == null) return;
}
添加一个定义"Revisable"合约的接口。然后让类实现这个接口
public interface IRevisable
{
DateTime RevisedDate { get; set; }
User RevisedBy { get; set; }
}
public class Request: IRevisable
{
}
public class Material: IRevisable
{
}
和
if (entry.Entity is IRevisable)
{
var myEntity = entry.Entity as IRevisable;
ctx.LoadProperty(myEntity.RevisedBy, x => x.Roles);
if (myEntity.RevisedBy.Roles.Find(x => x.RoleName == "ADMIN") == null) return;
}
你绝对可以从某种BaseEntity
类继承你的类:
public class BaseEntity
{
...
public DateTime RevisedDate { get; set; } <---
public User RevisedBy { get; set; } <---
}
public class Request: BaseEntity
{
...
}
public class Material: BaseEntity
{
...
}
然后你可以这样写:
if (entry.Entity is BaseEntity)
{
... // your stuff
}