c# - 如何覆盖部分类属性

标签 c# asp.net-mvc-4 entity-framework-5

我有一个部分类,我想做如下的事情:

[MetadataType(typeof(UserMetaData))]
public partial class Person
{
    public override string PrivateData
    {
        get
        {
            return customDecrypt(base.PrivateData);
        }
        set
        {
            base.PrivateData = customEncrypt(value);
        }
    }
}

但是上面的方法不起作用。

有没有办法覆盖基本 Entity Framework 类的属性以允许自定义 getter/setter?

最佳答案

部分类与继承无关,override完全是关于继承。

partial类上的关键字仅意味着它可以在同一个程序集中声明多次。这与复制每个 partial class 的每个部分完全一样到同一个文件中并删除了 partial关键词。由于您不能在同一个类中两次定义相同的属性/函数/等,因此您不能在同一个类的两个不同部分中定义它两次,即使使用 partial 也是如此。关键字。

override另一方面,在派生 类中使用,表示它们正在替换它们继承自的基类的功能。如果没有显式继承,则继承自object ,它可以让你覆盖 ToString() (除其他外)。

您最好的选择是使用自定义 T4 模板生成加密/解密逻辑,或者将加密属性设置为 protectedprivate在设计器中手动添加 public进行解密的版本。

关于c# - 如何覆盖部分类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207652/

相关文章:

c# - Visual Studio 调试器挂起,无法从 w3wp 分离

c# - LINQ 挑战

asp.net-mvc - @Html.DropDownList 未在编辑中绑定(bind) selectedValue

entity-framework - 如何在 Edmx Designer 中对多对多关系启用级联删除

entity-framework-5 - 带有存储库的 Breeze

MySQL 5.5 + .NET 连接器 + Entity Framework + 迁移 = FormatException

javascript - Angular 2 和 C# API - 未处理的 Promise 拒绝 : ReferenceError: _body is not defined

c# - Selenium Webdriver - 如果未在 Debug模式下运行,则测试失败断言 C# visual studio

c# - 找不到 Controller

c# - 安装 Win 8 Pro 和 IIS 8 后 - 缺少 StaticFileModule