Я лучше тебя
-
Автор темы
- #1
И снова я. Этот самый зануда.
Сливаю обертку для Dictionary которую юзал для обращения к чему угодно по имени.
Сливаю обертку для Dictionary которую юзал для обращения к чему угодно по имени.
Ширина применения:
Представим что вы кексы. И у вас есть екстернал читуля, трейнер по сути, для кс го на пример. Как известно каждому кексику, в кс дохуя классов и смещений, вопрос только в том, как удобней их хранить? Огромной кучей? или в одном маленьком контейнере, хранилище, из которого, к оффсету можно было бы обратится, по ранее выданному ему имени?))))
Представим что вы кексы. И у вас есть екстернал читуля, трейнер по сути, для кс го на пример. Как известно каждому кексику, в кс дохуя классов и смещений, вопрос только в том, как удобней их хранить? Огромной кучей? или в одном маленьком контейнере, хранилище, из которого, к оффсету можно было бы обратится, по ранее выданному ему имени?))))
Суть дискурса:
Код:
using System.Collections.Generic;
public class Colider<T, V>
{
Dictionary<T, V> container;
public Colider()
{
this.container = new Dictionary<T, V>();
}
public void Add(T item, V value)
{
lock (this.container)
{
this.container.Add(item, value);
}
}
public void Remove(T item)
{
lock (this.container)
{
if (this.container.ContainsKey(item))
{
this.container.Remove(item);
}
}
}
public V this[T item]
{
get
{
return this.container[item];
}
set
{
this.container[item] = value;
}
}
public V Find(T item)
{
if (this.container.ContainsKey(item))
{
return this.container[item];
}
return default(V);
}
public void Edit(T item, V newValue)
{
lock (this.container)
{
V value = this.Find(item);
if (!value.Equals(default(V)))
{
this.container[item] = newValue;
}
}
}
public void Clear()
{
lock (this.container)
{
this.container.Clear();
}
}
public int Count
{
get { return this.container.Count; }
}
~Colider()
{
}
}
Вроде ничего такого. Мозговитый бы спросил, зачем, если можно на прямую юзать? За тем чтобы не тянуть зависимость System.Collections.Generic во всех файлах, где оно будет юзатся.
Код:
//Где нам удобней, бацаем наш класс, во внешнем статическом классе на пример. кому как удобно.
Colider<string, int> Offsets = new Colider<string, int>();
//Добавляем оффсеты.
Offsets.Add("someOffset1", 0x4545f);
Offsets.Add("someOffset2", 0x4345f);
Offsets.Add("someOffset3", 0x4145f);
Offsets.Add("someOffset4", 0x46a);
//теперь когда добавили оффсеты в контейнер, можем обращаться к ним по имени.
int offset1 = Offsets["someOffset1"]; //выдаст 0x4545f
Последнее редактирование: