c# - 使用引用第二个程序集的程序集,而不引用该程序集

标签 c#

我有一个小型库,其中包含各种随机扩展方法。最近我将一些 WPF FrameworkElement 扩展方法引入其中,但发现自己在另一个使用我的库的项目(控制台应用程序)中遇到编译器错误,因为现在它需要引用几个 WPF 相关程序集(找不到 FrameworkElement等等等等)。此项目不调用任何涉及 FrameworkElement 的方法。

随着我的扩展方法库的增长,我宁愿不必将它分解成几个小程序集,也不想在非 WPF 项目中添加一堆对 WPF 程序集的引用。有什么办法可以解决这个问题,还是我必须拆掉我的图书馆?

我在 .NET 4.5 中使用 VS 2013

最佳答案

事实证明,您可以通过将有问题的类型放在不同的命名空间中来做到这一点。我所有的扩展方法都在同一个 Common.Extensions 命名空间中,这显然会导致加载该命名空间中的所有内容。通过将 WPF 特定扩展移动到 Common.WPF.Extensions,我能够将它们全部放在同一个程序集中。

更新:

此错误的具体原因归结为其中一种扩展方法中包含的面向公众的类型。原来你可以为你没有引用的类型有一个扩展方法,但是这些方法都不能有参数、返回或使用未引用类型的类型声明。就我而言,我有

public static void SetParentCursor<T>(this FrameworkElement frameworkElement, Cursor cursor) where T : FrameworkElement

where T : FrameworkElement 最终杀死了它。

关于c# - 使用引用第二个程序集的程序集,而不引用该程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101116/

相关文章:

c# - 如何创建一个 IEnumerable 以在单个语句中延迟获取所有 X

c# - 在项目之间合并 web.configs

c# - 如何获取 ControlPaint 绘制的边框宽度?

c# - StructureMap 中的跨线程冲突

c# - PDF 和 Silverlight,它们可以一起工作吗?

javascript - 我可以使用 Json.NET 将对象序列化为 JavaScript 构造函数调用吗?

c# - 在 MySQL 的结果中找不到指定的列

C# Windsor CaSTLe with ASP.Net Web forms - 如何解析业务类库

c# - 使用 C# 解析 .msg 文件

c# - 带参数启动 VNC-VIewer