Avatar billede stephanryer Nybegynder
08. august 2011 - 21:48 Der er 1 kommentar og
1 løsning

CodeContract og linq - kan det betale sig at benytte CodeContracts?

På arb idag har jeg brugt en god sjat timer på at forsøge at implementere code contracts i et par mindre projekter.

CodeContracts er hurtigt at komme ud over stepperne med, men det muligvis manglende sammenspil mellem code contracts og linq har gjort, at jeg tvivler på, om det er det hele værd:

Først har jeg en metode med denne syntaks, som forsikrer, at outputtet ikke er null:

ClassA Convert(ClassB b)
{
  Contract.Ensures(Contracts.Result<ClassA>() != null);
  ...
}

Hernæst forsøger jeg at udføre følgende:

// otherElements er bevist != null.
IEnumerable<ClassA> elements = otherElement.Select(e => Convert(e));

// Det er på nuværende tidspunkt ikke bevist, at elements ikke er NULL.

Den øverste metoder er muligvis slet ikke interessant. Det jeg nu vil spørge om er, om det virkelig kan passe, at Linq-metoderne ikke benytter Contracts,, siden jeg manuelt skal bevise, at min IEnumerable<ClassA> ikke er null?

Og er der nogen, der har generelle erfaringer med brugen af Code contracts?

På forhånd tak.
Avatar billede janus_007 Nybegynder
09. august 2011 - 09:58 #1
Du skal ind under Code Contract i dit project (properties) og enable Runtime Checking.

Derudover er Code Contracts ikke det samme som et filter, jeg tænker at du måske vha. din postede kode kun ville have ClassA's som ikke er null.

Det kan såmænd også lade sig gøre, men så skal du catche den, da din Contract vil smide en runtime exception :) Det er nok ikke det du lige vil, måske?
Avatar billede stephanryer Nybegynder
22. oktober 2011 - 13:58 #2
Ikke besvaret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel