harishhn Ответов: 1

Самый быстрый способ отображения объектов


C# .Net :
У меня есть большой объект, который содержит сложное отображение с 20 свойствами и простое отображение с 38 свойствами, в настоящее время я отображаю их с помощью отражения, но все же мне нужно улучшить производительность моего отображения.

Может ли кто-нибудь предложить, какая библиотека лучше всего подходит для повышения производительности отображения?

Что я уже пробовал:

я попробовал использовать automapper, а также ручное отображение свойств.
тем не менее, мы нуждаемся в улучшении производительности.
Моя текущая реализация:
public void FillObjectFromData(object objectToFill, object fromData)
		{
			if (fromData != null)
			{
				System.Reflection.PropertyInfo[] contractProperties = (objectToFill.GetType()).GetProperties();
				foreach (System.Reflection.PropertyInfo contractProperty in contractProperties)
				{
					if (contractProperty.CanWrite && fromData.GetType().GetProperty(contractProperty.Name) != null)
					{
						try
						{
							object dataValue = fromData.GetType().GetProperty(contractProperty.Name).GetValue(fromData, null);
							if ((dataValue != null) || (contractProperty.PropertyType.IsGenericType && contractProperty.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)))
							{
								contractProperty.SetValue(objectToFill, dataValue, null);
							}
						}
						catch //(Exception ex)
						{

						}
					}
				}
			}
		}

Afzaal Ahmad Zeeshan

Кстати, это полностью поведение по умолчанию, почему вы сопоставляете объекты, Почему вы на самом деле не можете передавать объекты или попробовать что-то вроде сериализаторов?

1 Ответов

Рейтинг:
0

E.F. Nijboer

Мой совет также состоял бы в том, чтобы пропустить все это картографирование. Вы можете легко скрыть свойства, просто определив интерфейсы и передав их. Например, вы получаете Abcde но передайте это как IAbc что эффективно ограничивает доступ к некоторым свойствам.

public interface IAbc 
{
  int A { get; }
  int B { get; }
  int C { get; }
}

public class Abcde : IAbc
{
  public int A { get; set; }
  public int B { get; set; }
  public int C { get; set; }
  public int D { get; set; }
  public int E { get; set; }
}

Удачи вам!