在对象类型未知的情况下使用哪种设计模式,我必须检查对象类型?

时间:2016-10-01 01:18:04

标签: c# design-patterns

我有下面的场景,其中服务层调用在DistributionPrompt中返回MentoringPathPromptBossLetterPromptCertificatePromptobject[]类型的对象。我已经设法将这个检查本地化为单个函数,但我觉得这不是一个优雅的解决方案,但我不太确定我可以应用哪种设计模式,这对于这种情况是理想的。

有人能让我知道我可以用于这种情况的设计模式名称吗?我不需要最终解决方案,因为我想自己解决这个问题,但只是名称就足够了,因为我不知道设计模式和我应该知道的。另外,如果引入了另一种Prompt类型,请解释这种设计模式与现有功能相比如何更有用?

private static PromptVisibility ParsePrompts(IEnumerable prompts)
        {
            var promptVisibility = new PromptVisibility();

            foreach (var t in prompts)
            {

                if (t is DistributionPrompt)
                {
                    promptVisibility.IsDistributionPromptVisible = true;
                    promptVisibility.DistributionNumber = ((DistributionPrompt)t).DistributionNumber;
                }

                if (t is MentoringPathPrompt)
                {
                    promptVisibility.IsMentoringPathPromptVisible = true;
                }

                if (t is BossLetterPrompt)
                {
                    promptVisibility.IsBossLetterPromptVisible = true;
                    promptVisibility.EmployerAddress = ((BossLetterPrompt)t).ExistingEmployerAddress;
                }

                if (t is CertificatePrompt)
                {
                    promptVisibility.IsCertificationPromptVisible = true;
                }
            }

            return promptVisibility;
        }

0 个答案:

没有答案
相关问题