[英]C# partial class and the get accessor
在实体框架实体的基础上,我为其中一个实体创建了部分类。 问题是,我想在返回ContentValue
之前添加一些代码。 但这不起作用-
[MetadataType(typeof(ToolTip_Meta))]
public partial class Tooltip
{
..some methods etc
}
public class ToolTip_Meta
{
[Required]
public string ContentValue
{
get
{
if (!string.IsNullOrEmpty(this.ContentValue))
return this.ContentValue.Replace("\n", "<br/>").Replace("\r", "").Replace("\r", "").Replace("'", "\\'").Replace("\"", """);
return this.ContentValue;
}
set { ContentValue = value; }
}
}
当我想在项目中的某个地方获取ContentValue
属性值时,得到的字符串不变,但没有进入get
访问器。 如何解决?
我认为这实际上与部分类或元数据无关。 您的问题实际上非常简单。
if (!string.IsNullOrEmpty(this.ContentValue))
当您访问this.ContentValue
,它将调用该getter,然后将访问this.ContentValue
,该get....。因此,您将获得StackOverflowException或OutOfMemoryException。
如果您没有遇到这两个错误之一,请更新您的问题以解释它如何不起作用。
在Entity Framework设计器中,将生成的属性的字段名称更改为ContentValueInternal
,并将其标记为具有内部访问权限,而不是公共访问权限。 仍然可以将其映射到ContentValue
的数据库字段。
然后,在手工编码的部分类中,创建一个名为ContentValue
的新公共属性,该属性具有您在问题中描述的逻辑,但是在内部使用ContentValueInternal
属性存储实际值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.