-
Список говнокодов пользователя ICELedyanoj
Всего: 5
-
+113
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
public partial class EditorForm : Form
{
private List<IEditObject> _readOnlyObjects;
public IEditObject EditValue {get; set;}
public EditorForm(IEditObject value, List<IEditObject> readOnlyObjects)
{
if (value != null)
{
EditValue = value;
}
if (readOnlyObjects != null && readOnlyObjects.Count > 0)
{
_readOnlyObjects = readOnlyObjects;
}
}
}
Во избежание лишних присвоений.
ICELedyanoj,
23 Февраля 2012
-
+116
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
class MyClass
{
private List<MyObject> _collection = new List<MyObject>();
public int SelectedObjectIndex { get; set; }
private void SelectionChanged( List<MyViewObject> selectedObjects )
{
bool bFound = false;
foreach (MyViewObject item in objects)
{
if (!bFound)
{
for (int i = 0; i < _collection.Count; i++)
{
if (item.Tag != null && item.Tag is MyObject)
{
if (_collection[i] == item.Tag)
{
this.SelectedObjectIndex = i;
bFound = true;
break;
}
}
}
}
else
{
break;
}
}
if (!bFound)
{
SelectedObjectIndex = -1;
}
}
}
Просто кладезь какой-то.
Я переделал исходный код, чтобы было понятнее кто здесь кому и не нужно было разбираться со сложной структурой классов, которая используется в исходнике.
Все имена классов вымышленные, на них не нужно обращать внимание - все лишь для демонстрации подхода к построению циклов и поиску объектов в коллекциях.
ICELedyanoj,
17 Февраля 2012
-
+115
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
try
{
foreach (MapObjectBase item in objects)
{
GisTrack track = item as GisTrack;
if (track != null)
{
//ToolTipContent - наследник TextContent
ToolTipContent oToolTip = (ToolTipContent)track.ContentList.FirstOrDefault<IContent>(a => a is TextContent);
if (oToolTip != null)
{
track.ContentList.Remove(oToolTip);
}
}
}
this.map.Redraw(false);
}
catch (Exception ex)
{
MonitoringManager.Instance.WriteLog(ex.ToString());
}
Linq - как граната. Смотря в чьих руках.
ICELedyanoj,
14 Февраля 2012
-
+141
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
private void tlistObject_SelectedIndexChanged(object sender, EventArgs e)
{
IMapObject oTarget = this.tlistObjects.SelectedItem as IMapObject;
if (oTarget != null)
{
if (this.SelectedObject != null)
{
this.SelectedObject.ObjectMode = ObjectModeElements.None;
}
this.SelectedObject = this.tlistObjects.SelectedItem as IMapObject;
this.SelectedObject.ObjectMode = ObjectModeElements.Selected;
}
}
(Is + Explicit приведение) или (As + проверка на Null)?
Ход конём.
ОБЯЗАТЕЛЬНОЕ использование this при обращении к полям, свойствам и методам текущего класса - отдельная тема. Это одна из особенностей неповторимого стиля, присущего аффтару. Весь код забит thisами под завязку.
ICELedyanoj,
10 Февраля 2012
-
+117
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
/// <summary>
/// Преобразование элемента перечисления в строку
/// </summary>
private String GetEnumElementString(Object e, Type t)
{
string result = string.Empty;
if (t == typeof(AccessMode))
{
if ((AccessMode)e == AccessMode.CacheOnly)
{
result = LocalStrings.AccessMode_CacheOnly_RU;
}
else if ((AccessMode)e == AccessMode.ServerOnly)
{
result = LocalStrings.AccessMode_ServerOnly_RU;
}
else if ((AccessMode)e == AccessMode.ServerAndCache)
{
result = LocalStrings.AccessMode_ServerAndCache_RU;
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
}
else if (t == typeof(MapImageType))
{
if ((MapImageType)e == MapImageType.Map)
{
result = LocalStrings.MapImageType_Map_RU;
}
else if ((MapImageType)e == MapImageType.Satellite)
{
result = LocalStrings.MapImageType_Sattelite_RU;
}
else if ((MapImageType)e == MapImageType.Hybrid)
{
result = LocalStrings.MapImageType_Hybrid_RU;
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
return result;
}
Конвертация Enum в строку. Аффтар уникален, и это лишь одно из проявлений его уникальности.
Swith - для трусов, статические тулзы и Extension - для дураков. У нас для этого будут методы классов, между прочим класс, в который входит этот метод - UserControl.
Кстати, поля LocalStrings - не константы, а статика:
public static string AccessMode_CacheOnly_RU = "Только кэш"; ....
ICELedyanoj,
08 Февраля 2012