【问题标题】:Create object dynamic创建对象动态
【发布时间】:2011-03-24 14:20:26
【问题描述】:

我正在创建一个数据来自数据库的系统。此数据表示必须动态创建的特定对象。

现在让对象进入我使用的构建框架。我需要像这样在班级顶部设置对象。

public class PageGeneratorWidget
{
    public ColorPickerWidget com1 { get; protected set; } 

    public PageGeneratorWidget(string dataId){
     //SOME CODE LIKE
     //com1.Type = "flat";
    }
}

动态设置对象的属性不是问题。我遇到的问题是我不知道如何动态创建

public ColorPickerWidget com1 {get; protected set;}

有人知道解决办法吗?

谢谢

【问题讨论】:

  • 是动态创建类还是动态创建实例?
  • com1 的type 在编译时是否已知?
  • 我没有看到这些是动态的还是问题。 PageGeneratorWidget 的构造函数初始化 com1,或者更改构造函数以接收 ColorPickerWidget 并将其设置为 com1。无论哪种方式,PageGeneratorWidget 都不应该在 com1 未初始化的情况下存在。

标签: c# .net asp.net asp.net-mvc-3


【解决方案1】:

您的解决方案隐藏在泛型中。

您的代码应如下所示。

public class PageGeneratorWidget<T>
{
    public T com1 { get; protected set; } 

    public PageGeneratorWidget(string dataId){
     //SOME CODE LIKE
     //com1.Type = "flat";
    }
}

并通过像这样声明类的对象来使用它

PageGeneratorWidget<ColorPickerWidget> my object =
     new PageGeneratorWidget<ColorPickerWidget>();

继续阅读An Introduction to C# Generics

【讨论】:

  • 很好,这会奏效。另外我看了一下,可以一次发送更多对象,但是有没有办法在 pageGeneratorWidget 不知道的情况下设置某些对象?
【解决方案2】:

你可以在 PageGeneratorWidget 的构造函数中创建对象:

public class PageGeneratorWidget
{
    public ColorPickerWidget com1 { get; protected set; } 

    public PageGeneratorWidget(string dataId){
     //SOME CODE LIKE
     //com1.Type = "flat";
    com1 = new ColorPickerWidget(); // Use color Picker Widget constructor
    }
}

您还可以让PageGeneratorWidget 构造函数采用ColorPickerWidget 类型的参数并将com1 设置为该值。

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多