Unity容器是否能够注册内部类类型?

3
我已经创建了项目,并将接口和类放在同一个文件夹中。我正在使用Unity容器来解析类对象的接口。现在我有另一个程序集想要访问这个程序集。我不希望任何人直接访问我的类。因此,如果可以注册内部类的类型,对我来说就很好了。有什么想法吗?

1
欢迎来到 Stack Overflow,请阅读有关如何在 Stack Overflow 上创建最小、完整和可验证示例的说明。http://stackoverflow.com/help/mcve - Tal Avissar
1
请添加一些您的代码示例。 - Tal Avissar
1个回答

0

你可以尝试使用友元程序集,但我认为这只会在长期运行中给你带来问题。

相反,我建议考虑另外两个选项。

选项A:使用工厂模式。

可以参考这里:Unity 1.2依赖注入内部类型

public class FactoryClass
{
   public IMyInterface CreateInstance()
   {
       return new MyInternalClass(); 
   }
}

internal class MyInternalClass : IMyInterface
{
}

还可以考虑使用带有内部构造函数的公共类,这将强制内部类创建实例。更多信息请参见:在内部类中使用公共构造函数和内部构造函数有什么区别?
public class MyAlmostInternalClass // in lack of better name
{
    internal MyAlmostInternalClass() {}
}

选项B: 重新考虑你的类

为什么它需要是内部的?其他程序集不应该使用接口吗?如果你不想让任何人从中派生并且除了实现的接口之外没有任何公共属性,那就将其密封。然后,使用接口而不是类真的没有理由。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接