C # 3.0 compatibilidade em 2,0 Net
-
05-07-2019 - |
Pergunta
O que é o C # 3.0 recursos de linguagem que podemos usar em um aplicativo que alvos .NET Framework 2.0?
PS: Eu sei poucos como expressões lambda e var
palavra-chave
Solução
Por favor, veja aqui:
Utilizando C # 3.0 (Net 3.5) sintaxe em uma aplicação Net 2.0
Para uma corrida completa para baixo do que você pode e não pode fazer quando o direcionamento do .NET Framework 2.0 e usando C # 3.0.
Em resumo:
- Você não pode usar os novos 3,5 assembléias (System.Data.Linq, System.Xml.Linq, System.Core).
- Você não pode Linq / consulta extensões ou Métodos de extensão (no entanto, veja abaixo formas de permitir o uso de ambos Linq / Sintaxe de consulta e Métodos de extensão!).
- Você pode usar o Var palavra-chave , Lambda , Inicializadores de objeto , Tipos anônimos & Auto-Implementado Propriedades .
Os métodos de extensão espécie de trabalho, no entanto, eles exigem "System.Runtime.CompilerServices.ExtensionAttribute", a fim de trabalho, e este tipo é encontrado dentro do System.Core DLL (que não é estritamente parte do .NET 2.0 quadro).
Sintaxe de consulta não pode ser usado "fora da caixa" para-falar, no entanto, ele pode ser usado se um terceiro DLL partido (como LINQBridge ) é usado. Esta DLL re-implementa muitos dos "desaparecidos" tipos que você precisa executar LINQ ao alvejar o .NET Framework 2.0 com eficácia. Ele também implementa o tipo "ExtensionAttribute" necessário para métodos de extensão para trabalhar, então simplesmente adicionando / referenciando o LINQBridge DLL do seu projeto permitirá LINQ, Sintaxe de consulta / Expressões e Métodos de extensão!
Outras dicas
Eu tenho um artigo neste tema.
Em resumo:
suportados:
- Propriedades implementadas automaticamente, variáveis ??digitadas implicitamente locais e arrays, objetos e coleta de initializers, tipos anônimos, métodos parciais, expressões lambda convertidos em tipos de delegados.
parcialmente suportados:
- Os métodos de extensão (requer um atributo) e expressões de consulta (requer algo como LINQBridge para ser útil)
Não suportado:
- Lambdas convertido em árvores de expressão
Na verdade, eu ouvi dizer que a conversão em árvores de expressão é disponíveis com a ajuda de implementação de System.Core
de Mono. Eu não tentei ainda embora ... I manter significado para fazê-lo (e, em seguida, atualizar a página).