Java类<! - ? - >等效于c#

时间:2016-12-08 09:26:19

标签: java c#

我试图将代码从java移到c#,我遇到了代码语法问题。

因为在c#中不存在Class<?>而我需要在newInstance()内调用Class<?>

在java中我有:

private final Map< String, Class< ? extends AbstractAI>> aiMap = new HashMap< String, Class< ? extends AbstractAI>>(); //line code i need to move

public final AI2 setupAI(String name, Creature owner) {
        AbstractAI aiInstance = null;
        try {
            aiInstance = aiMap.get(name).newInstance();//line code i need to move
        }
        catch (Exception e) {
            log.error("[AI2] AI factory error: " + name, e);
        }
        return aiInstance;
    }

如果你知道解决方案,请帮我把这个java代码移到c#中。感谢

1 个答案:

答案 0 :(得分:0)

C#Generics的工作完全不同于Java Generics。看看C# vs Java generics

可能的解决方案:

    public abstract class Factory
    {
        private Factory()
        {

        }
        public abstract AbstractAI CreateInstance();
        public class Implementation<T> : Factory where T : AbstractAI, new()
        {

            public override AbstractAI CreateInstance()
            {
                return new T();
            }
        }
    }

以下课程:

$ORACLE_HOME

假设AbstractAI扩展/实现类/接口AI2