C#出厂默认退货

C#出厂默认退货,c#,.net,factory-pattern,C#,.net,Factory Pattern,我已经创建了一个简单的工厂,在我将其扩展到其他实现之前,我想知道从开关/默认值返回的正确/推荐行为是什么 在下面的例子中,我使用枚举(SerialisationTypes)来确定所需的具体实现,默认情况下,我计划通过无参数方法返回JSON serialiser实现,但这是switch语句默认情况下的正确行为还是引发异常 namespace Helper.Core.Serialisation { internal class SerialisationFactory {

我已经创建了一个简单的工厂,在我将其扩展到其他实现之前,我想知道从开关/默认值返回的正确/推荐行为是什么

在下面的例子中,我使用枚举(SerialisationTypes)来确定所需的具体实现,默认情况下,我计划通过无参数方法返回JSON serialiser实现,但这是switch语句默认情况下的正确行为还是引发异常

namespace Helper.Core.Serialisation
{
    internal class SerialisationFactory
    {
        internal ISerialiser Create()
        {
            return Create(SerialisationTypes.JsonSerialiser);
        }

        internal ISerialiser Create(SerialisationTypes type)
        {
            switch (type)
            {
                case SerialisationTypes.JsonSerialiser:
                    return new JSonSerialiser();
                default:
                    return new JSonSerialiser();
            }
        }
    }
}

通常,如果找不到您的类型,则表示编码错误。如果返回默认值,则稍后抛出异常时将看到错误。你对自己和其他开发者隐瞒了你的错误。因此,抛出异常将帮助您在开发过程的早期发现bug。而且尽早发现bug将减少交付正确工作软件所需的资金和时间。

您最好抛出一个异常,因为用户请求的是您没有实现的东西


另外,在您的代码中,如果枚举有其他值(例如XmlSerialiser、ProtbufSerializer等),那么您将始终返回JSonSerialiser,这将导致难以找到的bug。最好抛出一个异常,然后修复代码。

因为您计划使用JSON作为默认值,所以这样就可以了。您是在强制用户传递枚举类型,不是吗?