2017-01-11 5 views
0

Я создаю интерфейс, и я требую, чтобы он мог обрабатывать разные типы списков, что я должен использовать?Общий список в интерфейсе

Am используя классы, которые я использую в списках List<Person>, List<Charge>, List<Other>

Я попробовать этот интерфейс, но его не правильный Generic List Type, или тип я использую

interface iGeneric 
{ 
    void Add(object obj); 
    void Delete(object obj); 
    void Update(object obj); 
    object View(object obj); 
} 

а также класс заряда, наследующий интерфейс iGeneric

public class Charge : iGeneric 
{ 
    public Charge() 
    { 
     Description = "na"; 
    } 

public void Add(object obj) 
    { 
     //Add a new charge to the database 
     List<Charge> myCharge = new List<Charge>(); 
     string cn = ConfigurationHelper.getConnectionString("Scratchpad"); 

     using (SqlConnection con = new SqlConnection(cn)) 
     { 
      con.Open(); 

      try 
      { 
       using (SqlCommand command = new SqlCommand("INSERT INTO tblCharge ([Description],[Amount]) VALUES (@Description, @Amount)", con)) 
       { 
        command.Parameters.Add(new SqlParameter("Description", NewCharge.Description)); 
        command.Parameters.Add(new SqlParameter("Amount", NewCharge.Amount)); 

        command.ExecuteNonQuery(); 
       } 
       MessageBox.Show("New Charge added successfully"); 
      } 
      catch (Exception) 
      { 
       Console.WriteLine("Failed to insert new charge."); 
      } 
     } 

В идеале я хотел бы установить каждый список и класс, когда я определ e Список i.e

List<Charge> myCharge = new List<Charge>(); 
List<Person> myPerson = new List<Person>(); 
List<Other> myOther = new List<Other>(); 
+3

«его не нравится» - что это значит? Какое сообщение об ошибке? Какие наблюдения? 'Charge.Add' ожидает' object', но 'iGeneric.Add' ожидает' T'. Это невозможно компилировать. И что делает нижний блок кода (где вы инициализируете различные списки), чтобы сделать свой вопрос? –

+0

Я изменил его, чтобы привести его в соответствие с тем, что я делал ... попробовал List T, но у меня не было правильного синтаксиса/команды. Блок внизу - это 3 списка, которые я хочу использовать через интерфейс. Интерфейс должен иметь возможность принимать любой список, который я передаю. – Ggalla1779

+1

Я до сих пор не знаю, что «его не нравится» означает * специально *. Кроме того, я не уверен, что вы просите, и чего вы пытаетесь достичь. Пожалуйста, попробуйте уточнить свой вопрос. Например, в конце вы пишете: «В идеале я хотел бы установить каждый список и класс, когда я определяю Список i.e." Но следующий код-блок (инициализация списка) выглядит отлично, так что в чем проблема? –

ответ

1

Если я правильно понял ваш вопрос, вы можете сделать это с помощью дженериков. Используйте примерно следующее:

public interface IGenericManager<T> 
{ 
    void Add(T obj); 
    void Delete(T obj); 
    void Update(T obj); 
    T View(T obj); 
} 

public class Person 
{ 
    public string Name { get; set; } 
} 

public class PersonManager : IGenericManager<Person> 
{ 
    public void Add(Person obj) 
    { 
     // TODO: Implement 
    } 

    public void Delete(Person obj) 
    { 
     // TODO: Implement 
    } 

    public void Update(Person obj) 
    { 
     // TODO: Implement 
    } 

    public Person View(Person obj) 
    { 
     // TODO: Implement 
     return null; 
    } 
} 
+0

Работал лечить ... спасибо за вашу ясность – Ggalla1779

Смежные вопросы