当前位置:  开发笔记 > 编程语言 > 正文

通用类型在构造函数中

如何解决《通用类型在构造函数中》经验,为你挑选了1个好方法。



1> Jon Skeet..:

您不能使构造函数通用,但您可以使用通用静态方法:

public static Constructor CreateInstance(int blah, IGenericType instance)

然后在构造函数之后执行您需要的任何操作(如果需要).在某些情况下,另一种替代方案可能是引入通用接口扩展的非通用接口.

编辑:根据评论......

如果要将参数保存到新创建的对象中,并且希望以强类型方式执行此操作,则该类型也必须是通用的.

此时构造函数问题消失了,但您可能希望在非泛型类型中保留静态泛型方法:因此您可以利用类型推断:

public static class Foo
{
    public static Foo CreateInstance(IGenericType instance)
    {
        return new Foo(instance);
    }
}

public class Foo
{
    public Foo(IGenericType instance)
    {
        // Whatever
    }
}

...

IGenericType x = new GenericType();
Foo noInference = new Foo(x);
Foo withInference = Foo.CreateInstance(x);


不幸的是,通用静态方法不允许使用对象初始化器.这无法编译:Foo.CreateInstance(x){Prop ="42"};
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有