我已经创建了项目,并将接口和类放在同一个文件夹中。我正在使用Unity容器来解析类对象的接口。现在我有另一个程序集想要访问这个程序集。我不希望任何人直接访问我的类。因此,如果可以注册内部类的类型,对我来说就很好了。有什么想法吗?
你可以尝试使用友元程序集,但我认为这只会在长期运行中给你带来问题。
相反,我建议考虑另外两个选项。
选项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: 重新考虑你的类
为什么它需要是内部的?其他程序集不应该使用接口吗?如果你不想让任何人从中派生并且除了实现的接口之外没有任何公共属性,那就将其密封。然后,使用接口而不是类真的没有理由。