c# - 扩展方法中的访问依赖
问题描述
如何在此 MergeChannels 扩展方法中访问 MediaMuxer 中的工厂属性?可能吗?
public class MediaMuxer : IMediaMuxer
{
protected readonly IProcessWorkerFactory factory;
public MediaMuxer(IProcessWorkerFactory processFactory);
}
解决方案
不,您不能访问该factory
字段,因为它是受保护的 - 它只能从 的子类访问MediaMuxer
,并且扩展方法只能在静态类中声明,因此不能是MediaMuxer
. (即便如此,它也只能在编写访问代码的子类的实例中访问- 而不仅仅是任意MediaMuxer
的 .)
此外,即使它是公共的,muxer
也被声明为 type IMediaMuxer
,而不是MediaMuxer
,因此您只能访问在 中声明的成员IMediaMuxer
。所以基本上:
- 如果你能把它变成公共财产
IMediaMuxer
,那就行了 - 否则,将其设置为公共属性(如果可能,而不是字段)
MediaMuxer
并将扩展方法的第一个参数更改为 typeMediaMuxer
。
推荐阅读
- javascript - 将对象数组拆分为图表上 X 轴和 Y 轴的数组?
- python - re.search if/if not, but "nonetype object has no attribute 'group'"
- python - 将某些索引名称(字符串)复制到新的数据框
- java - Criteria Api 中的左外连接
- angular - 输入 '(token: string) => Observable<{ headers: HttpHe aders; }>' 不可分配给类型 'Observable
' - ubuntu-16.04 - 当我连接时,鳄梨酱关闭套接字到 guacd
- ios - 使用 Button 将文本添加到 UITableViewcell 中包含的文本字段值
- javascript - JS/JQUERY如何在同一个DIV中优先点击按钮
- spring - Thymeleaf 表达式对象:#session 和 ${session....}
- elasticsearch - 如何在 Spring Data ES 3.2.0.M1 中使用 High Level Rest Client