C# 试图获得/创造记录
我在获取和设置值时遇到问题,因为我在代码中引入了第三个方面 以前,我会这样做,以便在记录中获取/设置:C# 试图获得/创造记录,c#,nhibernate,C#,Nhibernate,我在获取和设置值时遇到问题,因为我在代码中引入了第三个方面 以前,我会这样做,以便在记录中获取/设置: public virtual string MyString { get; set;} 在我看来: public string MyString { get { return Record.MyString; } set { Record.MyString = value; } } NHibernate会将我的值保存在DB中(显然,为了简洁起见,这里不提供我的其他代码) 现
public virtual string MyString { get; set;}
在我看来:
public string MyString
{
get { return Record.MyString; }
set { Record.MyString = value; }
}
NHibernate会将我的值保存在DB中(显然,为了简洁起见,这里不提供我的其他代码)
现在,我正在尝试用一个列表做一个复选框。我有一个复选框:
public class MyPart : ContentPart<MyPartRecord>
{
public MyPart()
{
MyList = Enum.GetValues(typeof(MyEnum))
.Cast<MyEnum>().Select(x =>
{
return new SelectListItem { Text = x.ToString().ToUpper(),
Value = ((int)x).ToString() };
}).ToList();
}
public IList<SelectListItem> MyList { get; set; }
private string myCheckBox;
// Record class contains the following commented code:
// public virtual string MyCheckBox { get; set;}
// Trying to do this now here in MyPart class:
public string MyCheckBox
{
get
{
if (!string.IsNullOrEmpty(myCheckBox))
return myCheckBox;
// Tried the following commented code to get value:
// Record.MyCheckBox = myCheckBox;
return string.Join(",", MyList.Where(x => x.Selected)
.Select(x => x.Value).ToArray());
}
set
{
myCheckBox = value;
// Tried the following commented code to set value:
// Record.MyCheckBox = myCheckBox;
}
}
}
公共类MyPart:ContentPart
{
公共事务部()
{
MyList=Enum.GetValues(typeof(MyEnum))
.Cast().Select(x=>
{
返回新的SelectListItem{Text=x.ToString().ToUpper(),
Value=((int)x).ToString()};
}).ToList();
}
公共IList MyList{get;set;}
私有字符串myCheckBox;
//记录类包含以下注释代码:
//公共虚拟字符串MyCheckBox{get;set;}
//现在在MyPart类中尝试执行此操作:
公共字符串MyCheckBox
{
得到
{
如果(!string.IsNullOrEmpty(myCheckBox))
返回myCheckBox;
//尝试使用以下注释代码获取值:
//Record.MyCheckBox=MyCheckBox;
返回string.Join(“,”,MyList.Where(x=>x.Selected)
.Select(x=>x.Value).ToArray();
}
设置
{
myCheckBox=值;
//尝试使用以下注释代码设置值:
//Record.MyCheckBox=MyCheckBox;
}
}
}
我只是不知道在这种情况下如何分配值(获取/设置myCheckBox
到myCheckBox
。它在数据库中被保存为null
提前感谢您的帮助。在我看来,您可能隐藏了
MyCheckBox
的基本virtual
实现
我认为您更愿意覆盖基础:
public override String MyCheckBox
{
get
{
if (!string.IsNullOrEmpty(myCheckBox))
return myCheckBox;
// Tried the following commented code to get value:
// Record.MyCheckBox = myCheckBox;
return string.Join(",", MyList.Where(x => x.Selected)
.Select(x => x.Value).ToArray());
}
set
{
myCheckBox = value;
// Tried the following commented code to set value:
// Record.MyCheckBox = myCheckBox;
}
}
因此成为变量而不是混淆它?我最终只是摆脱了部分,只保留了一条记录-这允许我在视图模型中执行get
和set
,效果更好(也不那么混乱).TryRecord.MyCheckBox=value
@DStanley我几天前尝试过:)由于公共虚拟字符串MyCheckBox{get;set;}
位于单独的记录类中,因此重写将不起作用。这是一个零件类。好的,现在建议使用Record.MyCheckBox
。我没听懂那部分。所以在某个地方有一个部分
类的实例。那么与记录的联系是什么?部分
类是否应该引用一个记录
对象,您可以使用该对象执行类似于myRecord.MyCheckBox=MyCheckBox
的操作?将本地成员分配给实例成员?我输入错误。它应该是MyPartyRecord
连接是public类My-Part:ContentPart{…}
。我在一开始展示了它通常是如何完成的(这是有效的),它只是将myCheckBox
转换成myCheckBox
,这让我感到困惑。