如何使用反射调用项目范围的属性?

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 他们完全按照您的意愿行事。

【讨论】:

以上是关于如何使用反射调用项目范围的属性?的主要内容,如果未能解决你的问题,请参考以下文章

第三次发了,反射如何获取子类属性的值

如何使用反射调用自定义运算符

使用反射循环获取Bean中的属性

跟王老师学反射使用反射调用属性

反射机制在java中如何做呀?

说说对java反射的理解,使用反射如何获取一个类的所有方法,使用反射需要注意哪些问题?