Возможные решения для функции в интерфейсе, которой могут потребоваться разные параметры в зависимости от каждого испольC#

Место общения программистов C#
Ответить
Anonymous
 Возможные решения для функции в интерфейсе, которой могут потребоваться разные параметры в зависимости от каждого исполь

Сообщение Anonymous »

Я разрабатываю систему пула на C#, пригодную для использования в Unity, которая объединяет и возвращает классы непосредственно вызывающему объекту, поэтому любые объекты будут напрямую ссылаться на класс объекта в пуле.
ниже приведен мой общий интерфейс, который размещается в любом классе, который я могу объединить в пул

Код: Выделить всё

public interface IPoolable where T : MonoBehaviour, IPoolable
{
///This is just a reference to a list so that any object can pool itself back
public Pool Pool { get; set; }
/// 
/// determines if pooled object is new spawn to run any function needed
/// to initialise the object. Manually set it to false after you run any custom initialisation function
/// 
public bool IsNewSpawn { get; set; }
public bool IsPooled { get; set; }
/// 
/// Implement a function to add itself back into the pool.
/// Use to replace destroy function in execution
/// 
public void PoolSelf();
}
Сценарий использования.
Это объект, который будет объединен в пул

Код: Выделить всё

public class PooledObject : IPoolable
{
public Pool Pool { get; set; }
public bool IsNewSpawn { get; set; }
public bool IsPooled { get; set; }
public void PoolSelf()
{
///whatever you need to do when this object needs to be pooled
///you then run a function in the pool which pools this object
}
///say these are values i need to initialize on object spawn but not when it gets merely cached to be reused later
public int randomValue;
public string randomText;
public vector3 randomVector;
// i now setup an initialization function with variable parameter input based on what this class need
public void Initialize(int value1, string value2, vector3 value3)
{
//do field assignment etc or anything else i may need
}
}
это создатель указанного объекта со ссылкой на тот же пул, что и объект, поэтому он может создавать вещи и т. д.

Код: Выделить всё

public class Spawner
{
//reference to the pool, i handle the assignment of reference with a static pool manager elsewhere
private Pool ObjPool;

//a potential spawn method
public void SpawnObj()
{
//this gets me a pooled object etc.
PooledObject newSpawn = ObjPool.GetPooledObj();
//now i need to manually check if the newSpawn is actually a new object before i run the custom initialize method in the pooledobject
}
}
Моя проблема заключается в том, что я хочу вместо этого добавить эту функцию инициализации в интерфейс, чтобы она была гарантирована для всех объектов, допускающих пул, вместо того, чтобы делать проверку с помощью bool и писать собственную функцию инициализации для каждого уникального случая пула, поскольку она может иметь разные входные параметры.
Любые предложения по дизайну будут оценены.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... erent-para
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»