Qual a melhor forma de usar o GC e a WeakReference juntos ?
Normalmente quando crio muitas instancias dentro de um loop costumo utilizar a class WeakReference, e depois chamo o GC.Collect(). É uma boa pratica fazer uso desses recursos juntos? essa é a maneira correta ?
/**
* <summary>
* Recebe uma classe com variaveis instanciadas e não nullas
* e preenche os valores em variaveis com o mesmo nome no segundo argumento recebido
* </summary>
* <param name="comparar">
* Objeto que irá passar as informações contidas para outra classe
* </param>
* <param name="comparacao">
* Objeto que irá receber os valores informados pela outra classe
* </param>
* <returns>
* Retorna o objeto passado como argumento com as variaveis já instanciadas
* e com os valores definidos,
* </returns>
*/
public T CompararPreencherPropriedade(Object comparar, T comparacao ) {
PropertyInfo[] compararPropriedades = (comparar.GetType()).GetProperties();
PropertyInfo[] comparacaoPropriedades = (comparacao.GetType()).GetProperties();
WeakReference weak = null;
foreach (PropertyInfo propriedade in compararPropriedades) {
for (int i = 0; i < comparacaoPropriedades.Length; i++ )
{
PropertyInfo prop = comparacaoPropriedades[i];
weak = new WeakReference(prop);
if(propriedade.Name.Equals(prop.Name,StringComparison.InvariantCulture)){
prop.SetValue(comparacao,propriedade.GetValue(comparar,null),null);
}
}
}
GC.Collect();
return comparacao;
}