C# 使用接口注入工厂

C# 使用接口注入工厂,c#,dependency-injection,factory,factory-method,C#,Dependency Injection,Factory,Factory Method,我有一个工厂: public static class ClassFactory { public static IEnumHereClass CreateClass(EnumHere type) { switch (type) { case EnumHere.First: return new EnumHereFirstClass(); case EnumHere.S

我有一个工厂:

public static class ClassFactory
{
    public static IEnumHereClass CreateClass(EnumHere type)
    {
        switch (type)
        {
            case EnumHere.First:
                return new EnumHereFirstClass();
            case EnumHere.Second:
                return new EnumHereSecondClass();
            default:
                throw new NotSupportedException();
        }
    }
}
看起来不错。但我在这里看到了问题:我不能使用IoC容器(比如unity)注入它,也不能模拟它。我想进行此更改(使用接口注入并删除静态):

你觉得怎么样?

看看

意图

抽象工厂提供了创建相关对象族的接口,无需显式指定它们的类



我看到这个问题以前和现在都被标记了。不要与抽象工厂混淆。

您的具体问题是什么?是否使用静态工厂?您在我的代码中看到了哪些缺点、误解或错误?请记录,表明设计存在问题。另外,使用
Enum
指定类型是一种不好的做法,因为这意味着当Enum类型更改时,您需要更改多个类。还可以看到这种替代方法:我知道抽象fatory,但我没有“相关对象族”。我只想根据传递的枚举值创建对象实例。您提到了IOC容器,这让我觉得您有两个或更多不同的类集要构建。为一个给定的集合实例化一个合适的工厂-我想象一个
enum
,然后调用该工厂,如OP中所示。
public class ClassFactory : IClassFactory
{
    public IEnumHereClass CreateClass(EnumHere type)
    {
        switch (type)
        {
            case EnumHere.First:
                return new EnumHereFirstClass();
            case EnumHere.Second:
                return new EnumHereSecondClass();
            default:
                throw new NotSupportedException();
        }
    }
}