2013-03-04 19 views
7

Ho una classe parziale e voglio fare qualcosa di simile al seguente:Come ignorare una proprietà di classe parziale

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

quanto sopra non funziona comunque.

Esiste un modo per sovrascrivere le classi del framework entità base le sue proprietà per consentire getter/setter personalizzato?

+0

cercare usando "pubbliche nuove PrivateData stringa" http://msdn.microsoft.com/en-us/library/51y09td4(v=vs.71).aspx#vclrfnew_newmodifier – mosca125

+0

è la proprietà della classe base definito come 'virtuale'? –

+0

Dov'è la definizione di BaseClass? Come "public partial class Person: PersonBase'? – Akku

risposta

21

Le classi parziali non hanno nulla a che fare con l'ereditarietà e override riguarda interamente l'ereditarietà.

La parola chiave partial su una classe significa semplicemente che può essere dichiarata più volte nello stesso assembly. È esattamente come se avessi copiato ogni parte di ogni partial class nello stesso file e rimosso la parola chiave partial. Poiché non è possibile definire due volte la stessa proprietà/funzione/etc nella stessa classe, non è possibile definirla due volte in due parti separate della stessa classe, anche con la parola chiave partial.

override, d'altra parte, viene utilizzato in derivati ​​ classi per indicare che stanno sostituendo la funzionalità della classe di base che ereditano da. Se non eredita esplicitamente, eredita da object, che consente di ignorare ToString() (tra gli altri).

le opzioni migliori per fare quello che vuoi sono o utilizzare un modello T4 personalizzato per generare il cifrare/decifrare la logica, o per impostare le proprietà crittografate per protected o private nella finestra di progettazione e aggiungere manualmente public versioni che fanno la decrittografia .

Problemi correlati