2012-07-13 4 views
1

기본 클래스 Base의 모든 하위 클래스에 특성 A이 있습니다.
기본 클래스 BaseA 속성의 추상 속성 정의를 생성하려면 어떻게해야합니까? 속성 선언을 기본 클래스로 자동 복사하는 방법

나는 ReSharper에서의이 최대 풀 회원 리팩토링 알고 있지만 이동 기본 클래스의 속성입니다.

나는 기본 클래스의 추상적 인 재산과 모든 서브 클래스에서 최우선 속성이 필요합니다. 리팩토링이 있습니까? Visual Studio 또는 ReSharper나를 위해을 자동으로 수행 할 수 있습니까?

답변

2

은 체크 박스가 회원들까지 대화를 당겨 ReSharper에서에 그것에 대해 "추상적 만들기"가 : enter image description here

+0

오 오지 못했습니다. 당신의 대답은 제가 찾던 것과 정확히 같습니다. – thersch

+0

Unforunatly * Pull Members Up *은 다른 하위 클래스를 자동으로 업데이트하지 않습니다 (* override *로 함). – thersch

+1

http://youtrack.jetbrains.com/issue/RSRP-275311 –

0

나는 ReSharper에서 위로 이동하면 자동으로 원하는 추상화를 만들 수 있습니다 모르겠어요,하지만 당신은이어야 추상 클래스에서이

처럼 수동으로 정의 할 수 있습니다 : 하위 클래스에서

public abstract double A 
{ 
    get; 
} 

:

public override double A 
{ 
    get 
    { 
     return 3.141; 
    } 
} 

새 인터페이스를 정의하거나 기존 인터페이스를 사용하고 인터페이스에서 속성을 정의하는 것이 더 명확한 설계 일 수 있습니다. 그렇게하면 기존 하위 클래스에 override을 사용할 필요가 없습니다.

+0

불쌍한 질문에 대한 사과드립니다. 나에게 그렇게하는 도구 (예 : ReSharper의 리팩토링 기능)를 찾고 있습니다. – thersch

+0

아 그래, 내가 수동으로하는 방법 (구문)도 모르겠다 고 생각 했으므로 내가 보여 주려고했다. –

+0

지금 내 질문을 업데이트했습니다. 죄송합니다. – thersch

0
public interface IInterface { 
    string MyProperty { get; } 
} 

public class Class : IInterface { 
    public string MyProperty { get; set; } 
} 


public abstract class AbstractClass { 
    public abstract string Value { get; } 
} 

public class ConcreteClass : AbstractClass { 

    private string m_Value; 
    public override string Value { 
     get { return m_Value; } 
    } 

    public void SetValue(string value) { 
     m_Value = value; 
    } 
} 

나는이 당신에게 도움이 될 것입니다 바랍니다.