我怀疑您没有向我们展示完整的代码,因为您提供的代码应该可以工作。
您必须具有返回内部类 EG 实例的公共方法或属性
namespace MyProject
{
public class PublicClass
{
public UtilClass DoSomething() {}
public UtilClass { get; }
// External assemblies cannot see the UtilClass type which is
// why this does not work.
}
}
这显然不能完成,因为外部程序集需要知道它。
如果您确实需要一个公开行为而不公开您的内部类型的公共属性,那么请考虑拥有一个您的实用程序类可以实现的接口。
这将允许您将帮助程序类保留在内部,但仍将其(通过接口)公开给外部程序集。
internal class UtilClass : IMyPublicInterface
{
}
namespace MyProject
{
public class PublicClass
{
public IMyPublicInterface DoSomething() {}
public IMyPublicInterface { get; }
// External assemblies now only need to know about the public interface.
}
}