繁体   English   中英

C#部分类和get访问器

[英]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("\"", "&quot;");
            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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM