Primavera.CoreLib.dll

A assembly Primavera.CoreLib.dll contém os tipos mais básicos e mais transversais da Plataforma Elevation.

Entre outros, os seguintes serão o de utilização mais frequente.

Primavera.Core.Ensure

Esta classe permite fazer conversões de valores mediante determinada condição. É útil, por exemplo, para garantir a validade dos parâmetros de um método.

Ver em API Reference.

Exemplo:

private void MyMethod(int value)
{
    value = Ensure.GreaterOrEqualTo(value, 0);
}

Primavera.Core.Memoizer[TArg, TResult]

Esta classe permite armazenar em memória (em cache) o resultado da avaliação de uma determinada função para um valor do parâmetro. Ou seja, para a função apenas será avaliada uma vez por cada valor diferente do parâmetro.

Mais informação sobre o conceito: http://en.wikipedia.org/wiki/Memoization

Ver em API Reference.

Exemplo:

public class MyClass
{
    private readonly Memoizer<int, int> memoizerCalculation =
        new Memoizer<int, int>(this.DoCalculation);

    private void DoSomething()
    {
        (...)
        int value = this.memoizerCalculation.Evaluate(20);
        (...)
    }
}

Primavera.Core.RegistryHelper

Esta classe, como o nome indica, permite manipular chaves e valores registados no Windows Registry.

Ver em API Reference.

Exemplo:

int value = RegistryHelper.ReadValueAsNumber(@"HKLM\Software\Primavera", "MyValue", 0);

Primavera.Core.RegistrySettingsHelper

Esta classe permite armazenar valores de configuração das aplicações no Windows Registry através de uma API simplificada. Os valores são armazenados em HKCU\Software\PRIMAVERA\" numa chave por aplicação.

Ver em API Reference.

Exemplo:

int value = RegistrySettingsHelper.ReadValueAsNumber("MyProduct", "MyKey", "MyValue", 0);

Primavera.Core.Retry

Esta classe permite executar uma determina ação, repetindo a sua execução por um número determinado de vezes, se ocurrer algum erro.

Ver em API Reference.

Exemplo:

Retry.Action(() => { (...) }, 3);

Primavera.Core.SmartGuard

Esta classe disponibiliza um conjunto de métodos para validar os métodos de entrada dos métodos. Tem como vantagem principal reduzir o código necessário para validar os parâmetros.

Ver em API Reference.

Exemplo:

public void MyMethod(MyClass value)
{
    SmartGuard.NotNull(() => value, value);
    (...)
}

Primavera.Core.SmartValidate

Esta classe é semelhante a SmartGuard mas não lança exceções, antes devolve true ou false mediante a condição avaliada.

Ver em API Reference.

Exemplo:

public void MyMethod(string value)
{
    if (SmartValidate.IsEmail(value))
    {
        (...)
    }
}

Primavera.Core.StringExtensions

Esta classe disponibiliza um número vasto de métodos de extensão para o tipo string.

Ver em API Reference.

Exemplos:

string value = "...";

byte[] bytes = value.GetBytes();
string replaced = value.Replace("old", "new", StringComparison.CurrentCultureIgnoreCase);

Primavera.Core.TransformExtensions

Esta classe disponibiliza métodos de extensão para o tipo string para conversão de valores.

Ver em API Reference.

Exemplos:

string value = "...";

string camel = value.Transform().ToCamelCase();
string plural = value.Transform().ToPlural();

Primavera.Core.Types

Esta classe, como o nome indica, disponibiliza métodos particulares para tipos de dados particulares.

Exemplos:

DayOfWeek day = Types.DateTime().FirstDayOfWeek;
MyEnum2 value2 = Types.Enum().Convert<MyEnum1, MyEnum2>(value1);
Guid id = Types.Guid().NewSequentialGuid();

Primavera.Core.Collections.IEnumerableExtensions

Esta classe disponibiliza um conjunto de extensões para o tipo IEnumerable<T>.

Ver em API Reference.

Exemplo:

IList<string> list = new List<string>();
list.ForEach(i => i.Replace("old", "new"));

Primavera.Core.Collections.IListExtensions

Esta classe disponibiliza métodos de extensão para o tipo IList<T>.

Ver em API Reference.

Exemplo:

IList<string> list = new List<string>();
list.AddRange(anotherList);

Primavera.Core.IO.FileSystemHelper

Esta classe disponibiliza métodos auxialiares para interagir com o sistema de ficheiros do Windows.

Ver em API Reference.

Exemplo:

FileSystemHelper.CombinePaths("C:\PrjNet\MyProject", "..\Common\file.txt");

Primavera.Core.IO.Compression.GZipHelper

Este componente permite comprimir e descomprimir dados no formato ZIP de uma forma muito simples.

Ver em API Reference.

Exemplo:

string json = (...);
byte[] compressed = GZipHelper.Compress(json);

Primavera.Core.IO.Pipes.NamedPipeClient

Este componente permite implementar um cliente muito simples para comunicar com um servidor por meio de named pipes.

Ver em API Reference.

Exemplo:

using (NamedPipeClient client = new NamedPipeClient("mypipe", 100))
{
    client.Start();
    client.Send(data);
}

Primavera.Core.IO.Pipes.NamedPipeServer

Por outro lado, o NamedPipeServer permite implementar rapidamente um servidor named pipes. O componente trata da criação dos threads necessários para esperar por conexões de clientes sem bloquear o thread original.

Ver em API Reference.

Exemplo:

using (NamedPipeServer server = new NamedPipeServer("mypipe"))
{
    server.Start(this.OnDataAvailable);
}

Primavera.Core.Net.EmailMessage

A classe EmailMessage disponibiliza uma API fluente para compôr e enviar mensagens de email.

Ver em API Reference.

Exemplo:

EmailMessage
    .Compose
    .To("joe@site.net")
    .CC("master@site.net", "fred@site.net")
    .Subject("Please consider...")
    .BodyInHtml("<H4>Please consider</H4>(...)"
    .PriorityHigh()
    .Send();

Primavera.Core.Reflection.*

Os tipos Primavera.Core.Reflection disponibilizam um acesso cómodo a várias operações de reflection sobre objetos, tipos, propriedades, etc. Estes tipos disponibilizam métodos de extensão que podem ser acedidos de uma forma muito conveniente do tipo target.Reflector().(...).

Ver em API Reference.

Exemplos:

MyClass oneobject = new MyClass();
RequiredAttribute attribute = oneObject.Reflector().GetCustomAttribute<RequiredAttribute>();
if (oneobject.GetType().Reflector().ImplementsInterface<IMyInterface>())
{
    (...)
}

Primavera.Core.Serialization.GenericJsonSerializer

Esta classe permite serializar e deserializar facilmente objectos no formato JSON.

Ver em API Reference.

Exemplo:

MyClass oneobject = new MyClass();
string json = GenericJsonSerializer.Serialize(oneobject);
MyClass anotherobject = GenericJsonSerializer.Deserialize<MyClass>(json);

Primavera.Core.Threading.AsyncHelper

Esta classe disponibiliza métodos auxiliares para manipular tasks.

Ver em API Reference.

Exemplo:

AsyncHelper.RunSync(() => { return this.MyTaskAsync; });

Primavera.Core.Threading.BackgroundTaskManager

O BackgroundTaskManager facilita a execução de tarefas em background (noutro thread) com a vantagem dessas tarefas serem registadas junto do ASP.NET e fiquem a observar o evento de shutdown do servidor Web para cancelar qualquer tarefa em execução.

Ver em API Reference.

Exemplo:

BackgroundTaskManager.Run(() => (...));

Design References

As seguintes design references dizem respeito a componentes de Primavera.CoreLib: