如何使用反射调用项目范围的属性?
Posted
技术标签:
【中文标题】如何使用反射调用项目范围的属性?【英文标题】:How to call projectwide properties using Reflection? 【发布时间】:2019-07-24 21:35:27 【问题描述】:我正在为游戏构建一个新闻源系统,我有一个文件,其中包含系统读取的各种字符串消息以在屏幕上显示它们。
这样的字符串不是问题:“欢迎来到垃圾岛”
但我想添加一些动态文本,其中包括来自类或非 void 函数的一些特定变量,这些变量将其结果返回到消息的定义位置:
示例:“时间:[显示当前时间]”应给出“时间:晚上 10:23”
我认为使用标记代码的标签就足够了。 为了实现上面示例的格式,我想出了这个:
“时间:
”
//注意:daytime是一个浮点值,ToTime返回一个时间格式的字符串
这是我的方法,但当然不起作用:
string msg = messages [_index];
string prefix = "";
string subfix = "";
string code = "";
if (msg.Contains ("<code="))
int start = msg.IndexOf ("<code=")
prefix = msg.Substring (0, start);
start += 6;
end = msg.IndexOf ("/>");
code = msg.Substring (start, end - start);
suffix = msg.Substring (end+2, msg.Length-1);
Debug.Log ("Function found: " + code);
string codeReturnValue = //DO MAGIC REFLECTION WITH "code"
text_message.text = prefix + codeReturnValue + subfix;
else
text_message.text = msg;
但是如何使用反射将“代码”转换为实际调用?
我认为这是不可能的,但是我将如何管理这样的事情而不必创建大量的硬编码函数,而是根据消息字符串收集所有信息?
【问题讨论】:
【参考方案1】:你可以使用Roslyn's scripting APIs。
Here's a good article 他们完全按照您的意愿行事。
【讨论】:
以上是关于如何使用反射调用项目范围的属性?的主要内容,如果未能解决你的问题,请参考以下文章