Не реализуется интерфейс IList. Не позволяет использовать модификаторы public - C#
Формулировка задачи:
Как правильно реализовать интерфейс, что бы все методы были публичные и доступны через объект?
На примере строки 41 покажите правильную реализацию.
using System;
using System.ComponentModel;
using System.Collections.Generic;
namespace Application
{
public class BindList<T> : IList<T>
{
private List<T> _list;
public event EventHandler AddingNew;
public event EventHandler ListChanged;
private void OnAddingNew (object sender, EventArgs e) {
this.AddingNew(sender, e);
}
private void OnListChanged (object sender, EventArgs e) {
this.ListChanged(sender, e);
}
private void _resetBindings () {
this.AddingNew = null;
this.AddingNew += delegate { };
this.ListChanged = null;
this.ListChanged += delegate { };
}
public BindList () {
this._resetBindings();
this._list = new List<T>();
}
public BindList (List<T> list) {
this._resetBindings();
this._list = new List<T>(list);
}
// Если public - Ошибка
// public int IList<T>.IndexOf (T item) { ...
int IList<T>.IndexOf (T item) {
return this._list.IndexOf(item);
}
void IList<T>.Insert (int index, T item) {
this.OnAddingNew(this, EventArgs.Empty);
this._list.Insert(index, item);
}
void IList<T>.RemoveAt (int index) {
this.OnListChanged(this, EventArgs.Empty);
this._list.RemoveAt(index);
}
T IList<T>.this[int index] {
get {
return this._list[index];
}
set {
this.OnListChanged(this, EventArgs.Empty);
this._list[index] = value;
}
}
void ICollection<T>.Add (T item) {
this.OnAddingNew(this, EventArgs.Empty);
this._list.Add(item);
}
void ICollection<T>.Clear () {
this.OnListChanged(this, EventArgs.Empty);
this._list.Clear();
}
bool ICollection<T>.Contains (T item) {
return this._list.Contains(item);
}
void ICollection<T>.CopyTo (T[] array, int arrayIndex) {
this._list.CopyTo(array, arrayIndex);
}
int ICollection<T>.Count {
get { return this._list.Count; }
}
bool ICollection<T>.IsReadOnly {
get { return false; }
}
bool ICollection<T>.Remove (T item) {
this.OnListChanged(this, EventArgs.Empty);
return this._list.Remove(item);
}
IEnumerator<T> IEnumerable<T>.GetEnumerator () {
return this._list.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () {
return this._list.GetEnumerator();
}
}
static class Program
{
static void Main () {
BindList<int> bList = new BindList<int>();
}
}
} Решение задачи: «Не реализуется интерфейс IList. Не позволяет использовать модификаторы public»
textual
Листинг программы
public interface I1
{
void A();
}
public interface I2
{
void A();
}
public class A1 : I1, I2
{
void I1.A()
{
}
void I2.A()
{
}
}
public class A2 : I1, I2
{
public void A()
{
}
void I2.A()
{
}
}
public class A3 : I1, I2
{
void I1.A()
{
}
public void A()
{
}
}
public class A4 : I1, I2
{
public void A()
{
}
}