c# - Version-independent code for Rfc2898DeriveBytes (has Dispose on .NET 4.0 but not on 2.0) -


i'm writing small .net 2.0 compatible assembly uses rfc2898derivebytes. on .net 2.0 rfc2898derivebytes not implement idisposable, while in .net 4.0 rfc2898derivebytes implement idisposable.

my assembly loaded in .net 4.0 applications , in .net 2.0 applications.

do need dispose rfc2898derivebytes using .net 4.0 or can ignore memorystream? if so, how can write .net 2.0 , .net 4.0 compatible code, calling dispose on .net 4.0? (at best without reflection , on.)

i guess not using dispose on class not dangerous because idisposable comes abstract derivebytes-class.

you could:

rfc2898derivebytes rfc = null;  try {     var salt = new byte[128];     rfc = new rfc2898derivebytes("password", salt); } {     idisposable disp = rfc idisposable;      if (disp != null)     {         disp.dispose();     } } 

even roslyn, compiler doesn't remove as idisposable: http://goo.gl/oobkzv (right pane, in release mode, optimizations active)

(note i'm not replication using pattern... have initialized rfc variable inside try/finally instead of outside... there no practical difference)


Comments

Popular posts from this blog

python - No exponential form of the z-axis in matplotlib-3D-plots -

php - Best Light server (Linux + Web server + Database) for Raspberry Pi -

c# - "Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" error when deserializing class -