표현식이 리플렉션보다 훨씬 빠를 수 있다고 언급 한 another question을보고 있었는데, 이는 IL에 미리 컴파일 될 수 있기 때문에 가능합니다.reflection v expression
저는 어떻게 사용하는지 잘 모르겠습니다. 다음은 기본 아이디어가 모든 공개 속성의 값을 사용하여 동일성을 결정하는 것 (DDD 의미에서)을위한 기본 클래스에서 사용되는 코드입니다 (반영을 통해 가져옴). 이 기본 클래스를 사용하면 Value Object가있는 하위 클래스에 대한 동등성을 구현할 필요가 없습니다.
protected virtual bool HasSameObjectSignatureAs(BaseObject compareTo)
{
var signatureProperties = GetType().GetProperties();
foreach (var property in signatureProperties)
{
var valueOfThisObject = property.GetValue(this, null);
var valueOfCompareTo = property.GetValue(compareTo, null);
if (valueOfThisObject == null && valueOfCompareTo == null) {
continue;
}
if ((valueOfThisObject == null^valueOfCompareTo == null) ||
(!valueOfThisObject.Equals(valueOfCompareTo))) {
return false;
}
}
이 코드는 어떻게 표현식을 사용하여 다시 작성됩니까?
건배,
Berryl
And
표현을 구축하여이 작업을 수행 할 수 있습니다
질문에 설명적인 제목을 부여하십시오. Btw, 사전 컴파일되지 않은, 포스트 컴파일 된 것, 코드를 캐시하고 재사용 할 수 있다는 점을 제외하고는. – nawfal