는 방법이 있을 필요로 구현하는 객체의 구성원 인터페이스를 필요로하지 않고 그것을 명시적으로 그것을 구현하는 c#?

0

질문

나는 사용자 정의 컨트롤과 비슷한 ItemsControl 그래서 그것은 Items 시설 내가 원하는 것을 가능하지만에 대한 제어를 업데이트 시설을 구현해야 합니다 INotifyCollectionChanged. 나는 사용자를 결합 할 수있는 모든 개체 그래서 그것은 모두 구현 INotifyCollectionChangedIList.

는 간단한 솔루션을 만드는 새로운 인터페이스 목록 다음과 같도

public interface INotifyCollectionChangedAndList : INotifyCollectionChanged, IList { }

고 그것을 필요로 상속에 자신의 사용자 정의 컬렉션을 개체입니다.

그러나 대신에 이렇게 그들은 또한 사용할 수 있는 표준 ObservableCollection<T> 뿐만 아니라 어떤 상속가 모두 INotifyCollectionChangedIList 그러나 그것은 하지 상속 INotifyCollectionChangedAndList 고 나는 정말 없는 제어하는 것입니다. 마찬가지로 사용하는 경우 다른 라이브러리와 함께 유형은 그들이 통제할 수 없는가를 구현하는 두 개의 인터페이스에 그것은 여전히 작동합니다.

그래서 제 질문이 있을 경우 방법을 쉽고 그렇지 않으면(즉,반영)을 지정할 수 있습니다 모든 유형 사용을 구현해야 합니다 모든 요구 사항의 두개(혹은 많이)인터페이스 없이 명시적 SomeClass : INotifyCollectionChangedAndList?

편집

나는 대답은 없다. 그래서 나는 마크@benjamin 대답으로 올바른지만 때문에 되지 않을 수도 있습니다 최상의 제어를 위해 작가,그것이 다른 경우에서 가장 가까운 일이 될 것 그렇지 않으면 다음과 같를 달성했다.

1

최고의 응답

1

네,있습니다. 당신이 필요하지 않다. 그냥 당신의 클래스 일반적인을 지정하는 어떤 유형을 전달된 매개 변수는 구현해야 합니다 모두 인터페이스:

    public class ItemsController<TModel, TItem> where TModel : INotifyPropertyChanged, IEnumerable<TItem>
    {
        public TModel Model { get; set; }
    }

TModel 할 수 있도를 구현하는 인터페이스를 모두 필요,그래서 당신은 항상 당신 ItemsControllers 것 모델 객실 유형 TModel 를 구현하는 INotifyPropertyChanged 고도 Items 객실 유형 IEnumerable<TItem>.

2021-11-23 01:09:01

그것은 잘 방법 constrainting 유형 param. 그러나 사용할 수 없습니다 이러한 클래스에서는 표준 XAML 기 때문에 사람들의 입력 params...유형 params 피해야에서 제어/fw 요소 클래스 등등...
lidqy

나는에 대해 잊지 입력 제약 조건이지만,다음과 같 lidqy 언급한 컨트롤을 사용할 수 없습 generics 쉽고 Microsoft 낙담에서 그것을 그들의 지침이 있습니다. 최종 사용자 필요가 없을 XAML 및 제네릭입니다.
Michael Wagner

습니다.NET6.0 일부 프레임워크 지원을 제어합니다. Blazor 않지만,I don't know about WPF. 만약 당신이 지원하지 않는,어쩌면 당신을 만들 수 있는 파생된 형식 닫는 일반적인 기본 형식입니다.
benjamin

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................