【发布时间】:2012-03-18 10:10:23
【问题描述】:
嗨,我有一个问题,我已经破解了好几个小时我一直收到错误
无法将属性或索引器“AnonymousType#1.XP”分配给 -- 它 是只读的
问题出现在a.XP这里
foreach (var a in comments)
{
a.XP = score.getLevel(a.XP);
}
正如评论指出的那样,我从不说我想要做什么,我想用改进的值 score.getLevel(a.XP) 替换 a.XP。
这是完整的代码
protected void GetComments()
{
TimberManiacsDataContext db = new TimberManiacsDataContext();
Score score = new Score();
var comments = (from fComment in db.Comments
where fComment.PublishID == Convert.ToInt32(Request.QueryString["Article"])
orderby fComment.DateTime descending
select new
{
UserName = fComment.User.UserLogin.Username,
PostTime = fComment.DateTime,
UserImage = fComment.User.UserGeneralInfo.ProfilePicture,
Comment = fComment.Comment1,
UserID = fComment.UserID,
XP = fComment.User.CommunityScore
}).Take(10).ToList();
foreach (var a in comments)
{
a.XP = score.getLevel(a.XP);
}
Commentlist.DataSource = comments;
Commentlist.DataBind();
}
【问题讨论】:
-
错误信息的哪一部分你不明白?
-
如何解决,我想用新的和改进的值 score.getLevel(a.XP) 替换 a.XP
-
顺便说一句,在 C# 中将方法命名为
GetScore而不是getScore是惯例。类的公共表面区域应该使用这个版本的 PascalCasing。 camelCasing 是为私人成员、本地人等保留的。 -
嗯,谢谢你的提醒,顺便说一句受保护的方向是什么?
-
由于 protected 对派生类可见,出于设计目的,您应该简单地将其视为公共 API 的一部分。但我应该澄清一下,属性和方法应该是 PascalCased,公共与否。