/// <summary> /// 題型指定獲取HTML支援類實例 /// </summary> /// <param name="topicIdentifier">題型類型</param> /// <returns>HTML支援類實例</returns> public IHtmlSupport CreateHtmlSupportInstance(string topicIdentifier) { // 獲取HTML支援類Composer _composer = ComposerFactory.GetComporser(topicIdentifier); // 返回緩衝區中的支援類對象 Lazy <IHtmlSupport, IHtmlSupportMetaDataView> lazyHtmlSupport = HtmlSupportCache.GetOrAdd(_composer, (o) => { // 從MEF容器中注入本類的屬性信息(注入HTML支援類屬性) _composer.Compose(this); // 取得指定類型下的支援類類型參數 IEnumerable <Lazy <IHtmlSupport, IHtmlSupportMetaDataView> > supports = Supports.Where(d => d.Metadata.TopicIdentifier.Equals(topicIdentifier, StringComparison.CurrentCultureIgnoreCase)); if (!supports.Any()) { throw new HtmlSupportNotFoundException(MessageUtil.GetMessage(() => MsgResources.E0021L, topicIdentifier)); } LogUtil.LogDebug(MessageUtil.GetMessage(() => MsgResources.I0008L)); return(supports.First()); }); // 該題型HTML支持類實例(實例化) var htmlSupport = lazyHtmlSupport.Value; // 內部部件組合 _composer.Compose(htmlSupport); // 返回該題型HTML支持類實例 return(htmlSupport); }
/// <summary> /// 對指定計算式策略實例化 /// </summary> /// <param name="topicIdentifier">題型識別ID</param> /// <returns>策略實例</returns> public virtual ITopic CreateTopicInstance(string topicIdentifier) { // 以題型為單位取得Composer _composer = ComposerFactory.GetComporser(topicIdentifier); // 返回緩衝區中的運算符對象 Lazy <ITopic, ITogicMetaDataView> lazyTopic = TopicCache.GetOrAdd(_composer, (o) => { // 內部部件組合 _composer.Compose(this); // 指定運算符并獲取處理類型 IEnumerable <Lazy <ITopic, ITogicMetaDataView> > topics = Topics.Where(d => { return(d.Metadata.TopicIdentifier.Equals(topicIdentifier, StringComparison.CurrentCultureIgnoreCase)); }); // 部件是否存在 if (!topics.Any()) { // 指定的題型策略對象未找到 throw new TopicNotFoundException(MessageUtil.GetMessage(() => MsgResources.E0018L, topicIdentifier)); } LogUtil.LogDebug(MessageUtil.GetMessage(() => MsgResources.I0003L)); return(topics.First()); }); // 返回該運算符處理類型的實例(實例化) var topic = lazyTopic.Value; // 內部部件組合(策略抽象類中的計算式工廠對象注入) _composer.Compose(topic); return(topic); }
/// <summary> /// <see cref="CompileController"/>構造 構築依賴組合並導入<see cref="ApiProcess"/>API處理類 /// </summary> public CompileController() { // 獲取HTML支援類Composer Composer composer = ComposerFactory.GetComporser(this.GetType().Assembly); composer.Compose(this); }
/// <summary> /// /// </summary> /// <param name="topicIdentifier"></param> public void ReleaseExportsHtmlSupport(string topicIdentifier) { // 獲取HTML支援類Composer _composer = ComposerFactory.GetComporser(topicIdentifier); HtmlSupportCache.TryRemove(_composer, out Lazy <IHtmlSupport, IHtmlSupportMetaDataView> support); _composer.ReleaseExport(support); }
/// <summary> /// /// </summary> /// <param name="topicIdentifier"></param> public void Release(string topicIdentifier) { // 獲取HTML支援類Composer _composer = ComposerFactory.GetComporser(topicIdentifier); TopicCache.TryRemove(_composer, out Lazy <ITopic, ITogicMetaDataView> topic); _composer.ReleaseExport(topic); }
/// <summary> /// 畫面構造函數 /// </summary> public FrmMain() { InitializeComponent(); // 獲取HTML支援類Composer Composer composer = ComposerFactory.GetComporser(this.GetType().Assembly); composer.Compose(this); }
public ArithmeticFactory() { // 獲取計算式策略模塊Composer _composer = ComposerFactory.GetComporser(GetType().Assembly); }
/// <summary> /// 定義私有構造函數,使外界不能創建該類實例 /// </summary> private PolicyHelper() { ComposerFactory.GetComporser(this.GetType().Assembly).Compose(this); }
/// <summary> /// 實例化 /// </summary> public TopicParameterHepler() { // 獲取共通處理模塊Composer _composer = ComposerFactory.GetComporser(this.GetType().Assembly); }
/// <summary> /// 定義私有構造函數,使外界不能創建該類實例 /// </summary> public FormulasConsolerFactory() { // 內部部件組合 ComposerFactory.GetComporser(this.GetType().Assembly).Compose(this); }