详细说明:我正在通过过滤器功能从实体编写基本搜索,所以我可以这样做:
public Entity GetEntityBy(Entity filter)
{ }
public IList<Entity> GetEntitiesBy(Entity filter)
{ }
问题在于非可空类型(int,float等),我不想强迫&#34;强迫&#34;所有属性都写成nullables。我想避免任何类型的规则(例如应用属性或实现我自己的get / set),这样我就可以像往常一样编写实体并简单地使用这个过滤函数。
代码如下所示:
public class Entity
{
public int EntityID { get; set; }
public string Name { get; set; }
public DateTime RegisterDate { get; set; }
//Other properties
}
public IList<Entity> GetEntitiesBy(Entity filter)
{
if (filter != null)
{
if (filter.EntityID > 0)
{
//Add criteria to filter by ID
//In this case it works because there shouldn't have any IDs with 0
}
//this won't work because DateTime can't be null
//I can't check the default value as well because there are some searchs using the default value and I don't want to ignore that
if (RegisterDate != null)
{
}
}
}
它应该是一个简单的相等过滤器,具体取决于filter
参数中的值,但现在我不知道何时应该忽略默认值。
我已经有一个SCRUD管理器类,所以我想向它所属的类添加一个函数调用,这样我就可以检查何时读取/写入一个属性。
简短描述:如何在调用属性的get
或set
附加者之前添加函数调用动态课?这甚至可能吗?