我有一个部分类,我想做如下的事情:
[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 模板生成加密/解密逻辑,或者将加密属性设置为 protected
或 private
在设计器中手动添加 public
进行解密的版本。
关于c# - 如何覆盖部分类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207652/