我在一个项目中工作,在这个项目中,我们想要保存特定对象的历史。在保存时,我想要对象上的一个方法,它将确定它是否发生了更改,以便我可以调用一个方法来将其当前状态保存到历史中。例如,我从用户进行更改(或可能不更改)的对象填充表单,并提交表单。我想要获取我的原始对象和从表单更新的该对象的副本,并确定它是否发生了更改。此外,我可能会在某些时候决定某些属性并不重要(例如,如果名称更改,我将不会跟踪它)。
我认为实现这一点的最简单/最灵活的方法是,如果我可以给我关心的属性一个自定义属性ChangeTracked,然后我可以使用反射来获得具有该属性的所有属性的列表,并通过比较A.property == B.
我喜欢能够为可以使用的类提供默认值,但问题是,如果它们被更改,那么它将影响对它的所有引用,而不是“默认”。通过使用这样的默认值,它节省了内存,并允许默认值传播到使用默认值的所有引用。
一个简单的例子是
class A
{
static public A Default;
}
然后可以使用A.Default作为A的“默认”实例。同样,问题是A不是不可变的,或者至少是“冻结的”,对它的更改将更改所有引用。如果这是一个人想要的行为,这可能是好的,但如果不小心更改了缺省值,则可能会造成严重后果。
我真正需要的是一种深度冻结和解冻默认的方法。
显然,一种方法是只在一个条件上设置所有的setter
有没有人能帮我弄清楚--如何正确地存储以编程方式添加到我的应用程序中的控件数组?
更明确地说,我有一个以编程方式创建一些标签和PictureBoxes的函数,并将其添加到Panel Control中。
var lbLip = new Label { Text = @"LIP :", Location = new Point(5, 20), Size = new Size(29, 13) };
var lbLipVar = new Label { Text = "", Location = new Point(32, 20), Size = new Size(79
有没有办法让NHibernate只更新那些没有填写默认值的字段?假设我们有一个简单的类:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
我们还有一个标准的NHibernate映射,使用每个字段的属性和Id字段的Id。
假设我们想要一个仅更新名称的页面,因此我们发送Id,将其存储在隐藏字段中,并显示名称的文本框。用户修改名称并点击保存。我们回发,新建一个Person对象,并分配传入的Id和名称
当我向各种DB_DataObject类添加方法时,我倾向于
Class Example extends DB_DataObject {
function methodx() //start fresh
{
$newObject = DB_DataObject::factory($this->__table);
/* do stuff with $newObject */
}
而不是
function methodx() //use current instance
{
/* do stuff with $this */
}
我意识到我这样做是因为我不知道如何确定$
在构造我的控件(继承DataGrid)时,我会添加特定的行和列。这在设计时非常有用。不幸的是,在运行时,我在同一个构造函数中添加了行和列,但是DataGrid被序列化(在构造函数运行之后)添加更多的行和列。
序列化完成后,我需要清除所有内容并重新初始化行和列.是否有可以重写的受保护方法来知道控件何时进行序列化?
当然,我希望不必在构造函数中完成工作,丢弃它,并在(潜在的)序列化之后再做一次。是否有类似于“立即设置”的首选事件,以便无论我是否序列化,都会调用它一次?
我提到的序列化来自表单代码隐藏文件中的InitializeComponent()方法。
#region Windows Form
我正在向数据库中的表MyModel添加一行,然后在另一个表中创建关于该新行的通知。我需要新创建的MyModel行的ID才能正确创建我的通知。
这是我的控制器中的代码:
MyModel newMyModel = new MyModel
{
Title = appliedCourse.Title,
};
db.MyModel.Add();
// I need code here that finds the MyModel.ID - but I do not know how to search for this MyModel
// because MyModel.Title is
在一个C# Winforms (3.5)应用程序中,我添加了一个包含许多属性(get/set)的类,这些属性用于存储来自12个表单的过程的值。
在form 12之后,我想清除存储类中的所有属性值,以便下一个用户在从form 1开始处理时不会意外地记录值。
是否可以擦除/销毁/处置类中的所有属性值?
我的类看起来像这样:
private static int battery;
public int Battery
{
get { return storeInspectionValues.battery; }
set { storeInspectionValues.battery
我想了解其他人是如何应对以下情况的。
这不是家庭作业或任何类型的作业。创建示例类是为了更好地说明我的问题,但是它确实反映了我们希望得到反馈的现实生活场景。
我们从数据库中检索所有数据并将其放置到一个对象中。对象表示单个记录,如果数据库中存在多个记录,则将数据放置到记录对象的List<>中。
让我们说,我们有以下课程;
public class Employee
{
public bool _Modified;
public string _FirstName;
public string _LastName;
在DBIx::类ResultSource上使用新()方法创建(可能是临时的)变量时,它似乎不会使用DBIC模式(我们为从该模式创建表而指定的模式)中指定的默认值来填充属性。
目前,我们正在为一个这样的类创建一个默认值(第一种情况下这是一个问题)
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
在那个类中(即,属性que
在SQL insert中,通常我们在SQL中指定列的名称。有没有一种动态生成的方法?基本上,如果我们指定列的名称,那么明天如果添加一个新的列,就会涉及到代码更改。我怎样才能避免这种情况?
我在考虑下面的解决方案-
如何通过select column_name,* from information_schema.columns where table_name = '‘order by ordinal_position;获取列名,然后创建包含列的INSERT语句?这样我们就不需要在SQL中指定列名...有什么想法吗?