首页 / C# / 动态组织和调用C#方法
动态组织和调用C#方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了动态组织和调用C#方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1898字,纯文字阅读大概需要3分钟。
内容图文
相对较新的C#,寻找执行以下操作的“最佳实践”方式:
我有一个类(传感器)与公共方法,如“CommunicationStart”,“DoThing1”,“DoThing2”.
在调用这些方法之前,该类配置了传感器“Model”
基于该模型,公共方法应采用不同的代码路径.如果我要静态地执行此操作,则在每个公共方法中切换模型都可以解决问题.
我想动态地这样做以帮助长期支持.在每个公共方法中包装动态加载代码的“正确”方法是什么?反射?代表们?动态加载的函数应该驻留在哪里?他们应该和他们的公共包装人员在同一个班级,还是住在新的班级?
我正在寻找更多的“正确”方法和组织,而不是语法,因为我可以自己解决这个问题.非常感谢!
解决方法:
我希望我能正确理解你的问题.
以下是为常见方法和传感器实现创建可扩展系统的方法:
用于处理公共代码(传感器公共方法需要):
如果动态加载程序集,则可以使用Reflection查找实现公共接口的所有类,例如ISensorMethod(在通用程序集中).所有组件都必须知道它.
这个接口可以有一个方法,比方说execute(),以及一个能够识别方法的标识符,例如string Key {get; }.
每个可重用的代码都是在一个单独的类中(每个方法一个类).
您的主代码(加载程序集的代码)可以在内部保留List< ISensorMethod>引用所有加载的可重用方法.
对于“传感器”类:
您可以执行相同的系统:动态加载程序集,找出所有“传感器”或“ISensor”类.
公共继承的传感器方法可以通过其Key调用可重用的方法.
为此,您可以在每个Sensor类中注入依赖项(在构造函数内或使用属性),比如IMethodCaller,允许它们通过键调用方法.
public interface IMethodCaller
{
void CallMethodByKey(string key);
}
然后这是一种使用的可能性:
public class ElectricSensor : Sensor
{
public ElectricSensor(IMethodCaller caller): base(caller)
{
}
public void CommunicationStart()
{
base.Caller.CallMethodByKey("START_COMMON");
base.Caller.CallMethodByKey("INITIALIZE_ELECTRIC");
}
// (...)
}
可以使用工厂设计模式完成正确传感器类的实例化…
根据您的需要,有很多种可能性.
我建议尽可能少地使用Reflection,因为如果发生错误,它总是处于一个非常棘手的代码中,并且问题的根源通常很远……除非所有异常和错误都使用有意义的错误消息进行非常谨慎的处理(明确开发人员在几秒钟内找到问题的真正来源).
最好的祝福,
内容总结
以上是互联网集市为您收集整理的动态组织和调用C#方法全部内容,希望文章能够帮你解决动态组织和调用C#方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。