Fórum interface ou classe abstrata com generics #525480

11/07/2015

0

alguém tem ideia de como se faz para implementar um codigo como o abaixo ?!

esse exemplo é do orm aurelius...


Manager.Find<TCustomer>(CustomerId);


queria implementar algo semelhante, mas a classe nao aceita generics

lembrando que o Manager no código acima possuir outros métodos além do find, e esses metodos nao tem generics...


valeu
Felipe Barros

Felipe Barros

Responder

Posts

15/07/2015

Dorivan Sousa

Generics é um tipo de dado flexível. São tipos parametrizados, ou, mais claramente, parâmetros-tipo, que podem ser definidos em design. Não devemos confundir os parâmetros genéricos com os tipos propriamente ditos. Generics não são tipos, são parâmetros. Assim como os parâmetros ou argumentos de um método são substituídos por um valor, o parâmetro do tipo genérico é substituído por um tipo. Os Generics fornecem uma nova forma de flexibilização dos nossos sistemas, para somar-se às formas que nós já conhecemos, como interfaces, padrões de projeto e RTTI

Leia mais em: Artigo Clube Delphi 114 - Entendendo Generics https://www.devmedia.com.br/artigo-clube-delphi-114-entendendo-generics/15811#ixzz3fxhUBwEh

TPessoa = class
private
  FNome: string;
public
  procedure DigaAlo;
  constructor Create(umNome: string);  overload;
  property Nome: string read FNome write FNome;
end;

TOperacao = class
public
  procedure Troca<TipoDeDado>(var Esquerda, Direita: TipoDeDado);
end;

{...}

implementation

{ TPessoa }
constructor TPessoa.Create(umNome: string);
begin
  FNome := umNome;
end;

procedure TPessoa.DigaAlo;
begin
  ShowMessage('Olá, meu nome é ' + FNome);
end;

{ TOperacao }
procedure TOperacao.Troca<TipoDeDado>(var Esquerda, Direita: TipoDeDado);
var
  Temp: TipoDeDado;
begin
  Temp := Esquerda;
  Esquerda := Direita;
  Direita := Temp;
end;

Leia mais em: Artigo Clube Delphi 114 - Entendendo Generics https://www.devmedia.com.br/artigo-clube-delphi-114-entendendo-generics/15811#ixzz3fxhd8Aj1
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar