Есть семь чекбоксов на форме, которые задают следующие параметры:
Так же есть функция, для которой можно задать некоторые параметры публикации (но не все, для остальных есть другой код). Вот она:
patterns.vknet.Wall.Post(new WallPostParams
{
OwnerId = -yourcom,
Message = yorTextBox.Text,
Attachments = SetAttachments(),
FromGroup = true,
PublishDate = DateForPost()
});
И получается так, что для того, чтобы публиковать пост с нужными параметрами, нужно создать кучу if-else конструкций и обработать таким образом все варианты. И сколько комбинаций нужно для этого? Это сотни строк повторяющегося кода. Других идей у меня нет, в голову ничего не приходит. Как это реализовать?
Не понял, как публиковать
отличается от копировать
, но эта штука явно раскладывается в последовательные if'ы, а не во вложенные:
if (chkПубликоватьБезТекста.Checked)
текст = null;
else if (chkПубликоватьСоСвоимТекстом.Checked)
текст = txtText.Text;
else
текст = GenerateText();
подпись = chkПубликоватьСПодписью.Checked ? txtПодпись.Text : null;
if (chkНеКопироватьБезФото.Checked && !HasPhoto)
return;
if (chkНеКопироватьБезАудио.Checked && !HasAudio)
return;
if (chkНеКопироватьБезВидео.Checked && !HasVideo)
return;
if (chkНеКопироватьБезТекста.Checked && string.IsNullOrEmpty(текст))
return;
ВыполнитьДействие();
Можете воспользоваться флагами.
[Flags]
public enum PostState
{
NoText = 1 << 0,
WithYoursText = 1 << 1,
WithSub = 1 << 2,
WithoutImage = 1 << 3,
WithoutAudio = 1 << 4,
WithoutVideo = 1 << 5,
WithoutText = 1 << 6
}
Общее состояние формы можно хранить в переменной, например так:
var state = (PostState)0;
if (noTextCheckBox.Checked)
{
state |= PostState.NoText;
}
if (yourTextCheckBox.Checked)
{
state |= PostState.WithYoursText;
}
...
Далее логическая задача - сопоставить состояние формы и поведение. Что поменяется в том или ином случае, как можно это обобщить? Флаги помогут по крайней мере абстрагироваться от checkBox-ов и обдумать логику.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, в самом конструкторе Visual Studio, в открытом окне когда наводишь курсор на вкладку (X) закрыть, данный крестик выделяется, крестик...
Вообщем есть такая проблема, те