использовать разные, но похожие объекты без ветвления - PullRequest
0 голосов
/ 08 октября 2011

Полиморфизм, Повторное использование кода, ООП, C # вопрос.Я хотел бы создать метод, подобный:

private void ManyLinesOfCode(DataContext mycontext)

, но я не смог бы отправить ему мои фактические данные, так как они не относятся к типу DataContext, и я не смог выполнить приведение,компилирует.

var includeCustomersFlag = Request["includeCustomersFlag"];
if (includeCustomersFlag == "1")
   {
   var context = new TypeByRepGroupDataContext();
   var lines = context.TypeByRepGroups;
   .... many lines of code
   }
else if (includeCustomersFlag == "2")
   {
   var context = new TypeByRepGroupNoChainsDataContext();
   var lines = context.TypeByRepGroupsNoChains;
   .... many lines of code
   }
else
  {
   var context = new TypeByRepGroupChainsOnlyDataContext();
   var lines = context.TypeByRepGroupsChainsOnliess;
   .... many lines of code
   }

У меня есть обходной путь, использующий одну параметризованную хранимую процедуру в моем текстовом тексте вместо нескольких текстовых данных, основанных на разных представлениях, но я бы предпочел иметь решение ac # для раздутого кода выше.

Я пытаюсь работать с решением Альбина.Я могу скомпилировать это:

public interface IMyInterface 
{

    string arcxpostyy {get; set;}
    string arcxpostmm {get; set;}
    string CustArea {get; set;}
    string type {get; set;}
    System.Nullable<decimal> amt {get; set;}

}
partial class TypeByRepGroup : IMyInterface  { }
partial class TypeByRepGroupNoChain : IMyInterface { }
partial class TypeByRepGroupChainsOnly : IMyInterface { }

Но ... это не дает мне ничего, как есть.Я очень сомневаюсь, что я делаю этот интерфейс правильным, но я хотел, по крайней мере, приложить усилия и не уверен, как использовать его в своем коде (фрагмент кода в моем вопросе.) В Интернете нет ссылок на фактическую реализацию этого решения.что я мог найти.Кто-нибудь может полностью описать решение?

Я начинаю работу в качестве старшего инженера-программиста через пару недель и хотел бы иметь возможность делать такие вещи.

1 Ответ

0 голосов
/ 08 октября 2011

Это не тип DataContexts, которые здесь большие проблемы.Дело в том, что вы используете разные сущности в разных контекстах.

Убедитесь, что TypeByRepGroups, TypeByRepGroupsNoChains и TypeByRepGroupsChainsOnliess реализуют общий интерфейс.Создайте частичный класс, в котором вы определите, что эти классы реализуют интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...