gpt4 book ai didi

c# - T 泛型不适用于构建器模式

转载 作者:行者123 更新时间:2023-11-30 20:35:42 25 4
gpt4 key购买 nike

我正在尝试使用构建器模式,但遇到了以前从未遇到过的需求。我正在尝试将泛型合并到构建器选项中。

public class ObjectBuilder
{
private object_collectionModelType;
//private Type_collectionModelType;


public void Build()
{
var x = CreateCollection<typeof(_collectionModelType)>(...);
}


//helper
private Collection<T> CreateCollection<T>(...)
{
...
}
}

它不喜欢我传递 _collectionModelType 错误是:

_collectionModelType is a field but used as a type.

是的,visual studio 编译器,你是对的,我想修复它,但不知道如何修复?

我需要构建器以某种方式允许将基础对象或 System.Type 作为配置的一部分传入,分配给私有(private)支持字段,然后在 Build 方法中使用。

最佳答案

这还不够吗?

public void Build<CMT>()
{
var x = CreateCollection<CMT>(...);
}

如果您不想在 Build() 方法中指定类型,您可以这样做:

public class ObjectBuilder<CMT>
{

public void Build()
{
var x = CreateCollection<CMT>(...);
}

那将是一样的,但是当您使用构造函数创建 ObjectBuilder 时必须指定类型,并且 ObjectBuilder 实例将无法更改, 因此只有一个 CMT 可以构建。

如果您想要更灵活的东西,请查看工厂模式或抽象工厂模式。如果使用通用接口(interface)正确实现,两者都非常强大。

关于c# - T 泛型不适用于构建器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com