11

部分クラスがあり、次のようなことをしたい:

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

ただし、上記は機能しません。

基本エンティティ フレームワーク クラスのプロパティをオーバーライドして、カスタム ゲッター/セッターを許可する方法はありますか?

4

3 に答える 3

28

部分クラスは継承とは何の関係もなく、override完全に継承に関するものです。

クラスのpartialキーワードは、同じアセンブリで複数回宣言できることを意味します。every のすべての部分をpartial class同じファイルにコピーして、partialキーワードを削除した場合とまったく同じです。partial同じクラスで同じプロパティ/関数/etc を 2 回定義することはできないため、キーワードを使用しても、同じクラスの 2 つの別々の部分で 2 回定義することはできません。

override一方、派生クラスでは、継承元の基本クラスの機能を置き換えることを示すために使用されます。明示的に継承しない場合は、から継承します。これにより、 (とりわけ)objectオーバーライドできます。ToString()

必要なことを行うための最良のオプションは、カスタム T4 テンプレートを使用して暗号化/復号化ロジックを生成するか、またはデザイナーで暗号化されたプロパティを設定protectedprivatepublic復号化を行うバージョンを手動で追加することです。

于 2013-03-04T18:09:24.520 に答える