이 문제로 인해 응용 프로그램의 도메인을 변경하기 전에 내가 본 것을 확인하는 사람이 필요합니다. 문제는 서로 상속하는 인터페이스에 대해 데이터 바인딩 할 때 기본 인터페이스의 속성을 볼 수 없다는 것입니다.인터페이스 상속을 사용하여 Winforms 데이터 바인딩
데이터 바인딩을 사용하는 WinForms 응용 프로그램을 만들고 있습니다. 이것은 .net3.5에 있으며 wpf를 사용할 수 없습니다.
어쨌든, 다음과 같은 설정이 있습니다.
public interface IClassOne
{
string Prop1 { get; set; }
}
public interface IClassTwo : IClassOne
{
string Prop2 { get; set; }
}
public abstract class ClassOne : IClassOne
{
public string Prop1 { get; set; }
}
public class ClassTwo : ClassOne, IClassTwo
{
public string Prop2 { get; set; }
}
기본 클래스는 공통 속성과 논리를 유지합니다. 기본 인터페이스는 공통 속성을 가지므로 각 구현에서 구현해야합니다.
위의 클래스 구조에 데이터 바인딩하는 경우 IClassTwo에 바인딩됩니다. 문제는 내가 IClassTwo에 databind 할 때 WinForms의 디자이너 작업에서 Prop1을 볼 수 없다는 것입니다. 그 한계를 극복하고 Prop1에 바인딩되는 컨트롤을 얻더라도 작동하지 않습니다.
그러나 두 ClassTwo를 바인딩하면 데이터 바인딩이 작동합니다.
모의 수업을 사용하고 테스트하기가 너무 어려워서 구체적인 수업을 다루고 싶지 않습니다. 또 다른 구체적인 구현을 할 때 코드를 반복해야하기 때문에 IClassTwo에 모든 것을 넣고 싶지 않습니다.
내가 알아야 할 것은 진정한 효과가없는 경우입니다. 이유를 알면 보너스가됩니다.
는 토니
더 많은 이유는 그 게시물에서 주어진 상속 된 인터페이스는 "명시 적으로 구현 된"것으로 간주됩니다. 이것은 인터페이스가 다중 상속을 지원하지만 클래스는 그렇지 않다는 사실과 더 관련이 있습니다. 단일 상속 (Inheritance)은 기본 클래스를 결정할 때 모호성을 없애기 때문에 바인더는 클래스에 상속을 기꺼이 수행하지만 인터페이스에서 비슷한 동작을하려면 중복되는 속성 이름을 해결해야합니다. – binki