2017-12-30 37 views
0

에 나는 DbSet의 내부를 찾고 있었다. 왜 누군가가 이런 일을하고 싶어하겠습니까? 이 일을 할 때 어떤 이점이 있습니까?임의 할당 방법

부작용이있는 재산 get 접속과 같은 편집

private IEntityType EntityType 
    { 
     get 
     { 
      _context.CheckDisposed(); 

      if (_entityType != null) 
      { 
       return _entityType; 
      } 

      _entityType = _context.Model.FindEntityType(typeof(TEntity)); 

      if (_entityType == null) 
      { 
       throw new InvalidOperationException(CoreStrings.InvalidSetType(typeof(TEntity).ShortDisplayName())); 
      } 

      return _entityType; 
     } 
    } 
+0

ReSharper 경고를 억제하려면 다음과 같이하십시오. ReSharper가 사용하지 않는 반환 값이 있음을 상기시키는 메서드를 호출하면됩니다. – Sweeper

+0

나머지 코드는 보지 않고는 말할 수 없습니다. 그러나 만약'EntityType'이 속성이라면, getter가 코드 작성자가 원하는 부작용을 가질 수 있습니다 (속성 getter에 대한 좋은 특성은 아니지만 때로는 상황이 그렇습니다). (링크가 속성이 정의 된 모듈로 곧바로 이동하기 때문에 실제로 속성이 값을 캐시한다는 것을 볼 수 있습니다. 따라서 저자가 값을 검색하거나 유효성을 검사하도록 할 수 있습니다.) 우리가 제안 할 수있는 전부는 의견입니다. 해당 코드의 작성자 만이 왜 그 코드를 작성했는지 확실히 알 수 있습니다. –

+0

GitHub –

답변

2

. (get의 경우) 속성을 무언가에 할당하거나 표현식으로 전달하지 않고 속성을 호출하거나 무언가를 할당하지 않고 (set의 경우) 속성을 호출 할 수 없습니다. 그들은 단지 가질 수 없습니다 :

EntityType; 

그들이이 get의 결과를 폐기 할 분명히 것을 만드는하고있는 모든, 아마도되지 않은 변수 경고를 피하기 위해.

+0

에 대한 질문에 대한 코드에 대한 링크가 있습니다. 부작용처럼 들리지만 질문을 편집하여 해당 속성을 포함 시켰습니다. 아직별로 의미가 없지만, 나는 명백한 것을 보지 못한다. –

+0

@ johnny5 그것은 "정확하고 행복하다"논리를 많이 실행한다. 특히 배치 된 검사뿐만 아니라 구성 검사 (한 번만 수행되는 저장 필드를 통해 해당 검사를 단락 시킴) –

+0

그 의미가 있습니다. 유효성 검사 방법이 더 명확하지만 다시 그 원본을 얻는 것처럼 느껴집니다 정상적으로 숨겨지기위한 것입니다. 전문성에 감사드립니다. –