首页 > 解决方案 > 扩展方法中的访问依赖

问题描述

在此处输入图像描述

如何在此 MergeChannels 扩展方法中访问 MediaMuxer 中的工厂属性?可能吗?

public class MediaMuxer : IMediaMuxer
{
   protected readonly IProcessWorkerFactory factory;
   public MediaMuxer(IProcessWorkerFactory processFactory);
}

标签: c#

解决方案


不,您不能访问该factory字段,因为它是受保护的 - 它只能从 的子类访问MediaMuxer,并且扩展方法只能在静态类中声明,因此不能是MediaMuxer. (即便如此,它也只能在编写访问代码的子类的实例中访问- 而不仅仅是任意MediaMuxer的 .)

此外,即使它是公共的,muxer也被声明为 type IMediaMuxer,而不是MediaMuxer,因此您只能访问在 中声明的成员IMediaMuxer。所以基本上:

  • 如果你能把它变成公共财产IMediaMuxer,那就行了
  • 否则,将其设置为公共属性(如果可能,而不是字段)MediaMuxer并将扩展方法的第一个参数更改为 type MediaMuxer

推荐阅读