首页 / C# / c# – 属性,接口或抽象类
c# – 属性,接口或抽象类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 属性,接口或抽象类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1511字,纯文字阅读大概需要3分钟。
内容图文
![c# – 属性,接口或抽象类](/upload/InfoBanner/zyjiaocheng/790/6d2dd2a5ab1a489a85e3c5fee3c7fbcb.jpg)
我想知道以下实现的一般建议(属性,接口,抽象类或其组合):
/// <summary>
/// Loads class specific information into a list for serialization. The class must extend PlugIn.
/// The filenames parameter is passed from a FileDialog.
/// </summary>
/// <param name="filenames">Accepts any number of filenames with fully qualified paths.</param>
public static void ExtractPlugInData(params string[] filenames)
{
List<Type> l;
foreach (string f in filenames)
{
Assembly a = Assembly.LoadFrom(f);
// lambda expression selects any class within a library extending the abstract PlugIn class
l = a.GetTypes().Where(type => typeof(PlugIn).IsAssignableFrom(type)).ToList<Type>();
if (l.Count > 0)
// write data to serializable class
WritePlugInData(f , l);
else
// throw exception
WriteLine("{0} :: No PlugIn Data Found" , a.FullName);
}
}
我意识到每种方法都有优点和缺点.显然,属性需要一些反思(抽象扩展和接口实现也是如此).抽象类采用我们唯一的基本继承,接口中的任何未来更改都可以破坏任何现有插件.所以,正如我所看到的那样,这些都是缺点.
性能不是问题(除非有一些我看不到的东西)因为任何反射只在提取限定类时才进行一次.要保存的关键数据是插件的名称(“MyPlugIn”),命名空间(“SuperPlugIn.PlugInClass”)以及.dll的启动路径.现在,使用抽象的PlugIn类,强制执行属性的扩展.如果我们实现接口(IPlugIn),这或多或少是相同的结果.
我们允许最终用户编写自定义插件.使用我们内部编写的插件,可以很容易地为我们的应用程序教授和实施一个必需的结构来实例化一个合格的类.但是,如果出现重大变化,我也在考虑最终用户的困难或不便.
欢迎所有评论,建议和问题!
注意:感谢Jon Skeet在片段中的lambda表达式.
内容总结
以上是互联网集市为您收集整理的c# – 属性,接口或抽象类全部内容,希望文章能够帮你解决c# – 属性,接口或抽象类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。