c# - 通过事件消息注入引用
问题描述
我在项目中使用 pub/sub 模式。如果一个类正在跟踪像浮点数这样的原始类型,并且其他子系统和类需要能够读取,是否可以使用消息来传递浮点数的句柄?不是价值,而是允许他们在必要时阅读它的东西。
解决方案
如果我理解正确,您可能会使用Func<float>
. 并且只需存储一个返回浮点值的方法。
例如
public class System : MonoBehaviour
{
public SubSystem SomeSubSystem;
private float currentFloat;
private float GetFloat()
{
return currentFloat;
}
private void Awake ()
{
SomeSubSystem.Initialize(GetFloat);
}
private void Update()
{
currentFloat += Time.deltaTime;
}
}
然后像例如使用它
public class SubSystem : MonoBehaviour
{
private Func<float> _getFloat;
public void Initialize (Func<float> getFloat)
{
_getFloat = getFloat;
}
private IEnumerator Start ()
{
while(true)
{
yield return new WaitForSeconds (1);
Debug.Log(_getFloat());
}
}
}
当然,同样的事情也可以在像这样的事件中提供
public event Action<Func<float>> SomeEvent;
因此,该事件的侦听器不会直接接收浮点值,而是如何获取它并可以存储它以供以后使用的方法。
推荐阅读
- mongoose - Mongoose 相同模式的多个文档
- javascript - 遍历对象数组,其中元素包含可以重复的元素数组,然后返回匹配
- sql-server - 无法用非主键制作外键
- c - IEEE 754:带有 fesetround() 的 sqrtf():编译器之间的不同结果:0x42440a72 与 0x42440a73
- reactjs - 如何使用 Formik 在 ReactJS 中递增和递减
- php - 如何使用嵌入查询在键值对中传递超过 1 个值来编辑 url
- python - ValueError: too many values to unpack (expected 2) error when change a value
- html - 如何更改 html 文本的位置?
- css - 响应时文本从背景溢出
- c - strsep() 导致分段错误