Created
August 12, 2014 09:58
-
-
Save AlexanderByndyu/e795c1e6d6c9161e3de9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| namespace ПредметнаяОбласть | |
| { | |
| using System; | |
| using System.Collections.Generic; | |
| internal abstract class Документ | |
| { | |
| private readonly List<Строка_Документа> строки = new List<Строка_Документа>(); | |
| public Документ() | |
| { | |
| ДатаСоздания = DateTime.Now; | |
| } | |
| public int Номер { get; set; } | |
| public DateTime ДатаСоздания { get; private set; } | |
| public IEnumerable<Строка_Документа> Строки | |
| { | |
| get { return строки.AsReadOnly(); } | |
| } | |
| public virtual void ДобавитьСтрокуДокумента(Строка_Документа строкаДокумента) | |
| { | |
| строкаДокумента.НазначитьДокумент(this); | |
| строки.Add(строкаДокумента); | |
| } | |
| } | |
| internal class Документ_с_Товаром : Документ | |
| { | |
| public int СпецифическоеПолеДляЭтогоТипаДокумента { get; set; } | |
| public override void ДобавитьСтрокуДокумента(Строка_Документа строкаДокумента) | |
| { | |
| base.ДобавитьСтрокуДокумента(строкаДокумента); | |
| // делаем что-то специфическое для этого типа документа | |
| } | |
| } | |
| internal class Документ_с_Товаром_и_Услугой : Документ | |
| { | |
| public int СпецифическоеПолеДляЭтогоТипаДокумента { get; set; } | |
| public override void ДобавитьСтрокуДокумента(Строка_Документа строкаДокумента) | |
| { | |
| base.ДобавитьСтрокуДокумента(строкаДокумента); | |
| // делаем что-то специфическое для этого типа документа | |
| } | |
| } | |
| internal abstract class Строка_Документа | |
| { | |
| public int Id { get; set; } | |
| public Документ СсылкаНаДокумент { get; private set; } | |
| public void НазначитьДокумент(Документ документ) | |
| { | |
| СсылкаНаДокумент = документ; | |
| } | |
| } | |
| internal class Строка_с_Товаром : Строка_Документа | |
| { | |
| public int ДанныеТовара { get; set; } | |
| } | |
| internal class Строка_с_Услугой : Строка_Документа | |
| { | |
| public int ДанныеУслуги { get; set; } | |
| } | |
| internal class Program | |
| { | |
| private static void Main() | |
| { | |
| var строка_с_Товаром1 = new Строка_с_Товаром {Id = 7}; | |
| var строка_с_Товаром2 = new Строка_с_Товаром {Id = 8}; | |
| var документ1 = new Документ_с_Товаром {Номер = 1}; | |
| документ1.ДобавитьСтрокуДокумента(строка_с_Товаром1); | |
| документ1.ДобавитьСтрокуДокумента(строка_с_Товаром2); | |
| var cтрока_с_Услугой1 = new Строка_с_Услугой {Id = 8}; | |
| var документ2 = new Документ_с_Товаром_и_Услугой {Номер = 2}; | |
| документ2.ДобавитьСтрокуДокумента(строка_с_Товаром1); | |
| документ2.ДобавитьСтрокуДокумента(cтрока_с_Услугой1); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment