我有2个变量
Date-Time-Modified
这是一个日期 - 时间变量Is-Deleted
变量,它是一个布尔值。 这两个变量可以在我拥有的每个类中找到,每次从数据库中插入,编辑或删除对象时,我都需要初始化这些变量。有没有办法做到这一点?
答案 0 :(得分:4)
使用基类。添加2个所需属性(DateTime,IsDeleted)。每个派生类现在都拥有此属性。您可以单独设置它们或迭代基类型以指定值。 您还可以使用事件自动触发更新。但我想你只想创建一个条目然后将其DateTime属性设置为实际的日期时间。
您还可以将此任务委派给数据库。它将负责设置此属性。
我懒惰朋友的一个例子;)
abstract class DatabaseEntryBase
{
public DatabaseEntryBase()
{
// You can initialize properties to a default value here
this.IsDeleted = false;
}
public DateTime ModifiedTime { get; set; }
public bool IsDeleted { get; set; }
}
class Entry : DatabaseEntryBase
{}
static void Main()
{
//-- Do your SQL stuff --//
var newEntry = new Entry();
newEntry.ModifiedTime = DateTime.Now;
newEntry.IsDeleted = false;
}
如果您需要所有实例保存相同的值(例如多次删除),请将它们推入集合(此处为List<DatabaseEntryBase>
类型的EntryCollection)并迭代它们:
public void SetAllItems()
{
foreach (DatabaseEntryBase entry in EntryCollection)
{
entry.ModifiedTime = DateTime.Now;
entry.IsDeleted = [...];
}
}
使用界面将完成相同的操作!它可以命名为ITaggable,并将这两个属性定义为契约。
答案 1 :(得分:2)
有一个包含这些成员的基类,然后让其他类扩展那个成员。
然后在基础上有一个方法来初始化它们。然后在插入上调用该方法等。
base.InitialiseVariables()
答案 2 :(得分:0)
有没有其他方法可以在不需要的情况下初始化它们 调用方法?
可能另一种方法是Aspect-Oriented Programming。例如,PostSharp。
代码看起来像这样:
[UpdateTimestamp]
public void InsertProduct(Product product)
{
// Your logic here
}