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: