Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建动态用户输入并基于所述输入初始化特定类(课堂计划生成器C#)_C#_Dynamic_Initialization_User Input - Fatal编程技术网

构建动态用户输入并基于所述输入初始化特定类(课堂计划生成器C#)

构建动态用户输入并基于所述输入初始化特定类(课堂计划生成器C#),c#,dynamic,initialization,user-input,C#,Dynamic,Initialization,User Input,我正在为我的一个老师朋友写一个简单的演讲计划,作为一个辅助项目,作为一种让自己学到更多C#的方法——我是个初学者 课程计划生成器的一部分是一个脚本,该脚本根据用户输入组装课程模块,随后可用于构建完整的课程计划。有不同类型的块可以保存不同的信息。因此,我创建了一个名为“讲师part_base”的基类: public abstract class LecturePart_Base : ScriptableObject { private string partName; priva

我正在为我的一个老师朋友写一个简单的演讲计划,作为一个辅助项目,作为一种让自己学到更多C#的方法——我是个初学者

课程计划生成器的一部分是一个脚本,该脚本根据用户输入组装课程模块,随后可用于构建完整的课程计划。有不同类型的块可以保存不同的信息。因此,我创建了一个名为“讲师part_base”的基类:

public abstract class LecturePart_Base : ScriptableObject 
{
    private string partName;
    private string description;
    private LecturePartType type;

    public virtual void Initialize(string partName, string description, LecturePartType type)
    {
        this.partName = partName;
        this.description = description;
        this.type = type;
    }

    public virtual void Display (Transform parent)
    {
        TextDisplayHelper.TextLine("Name: " + partName, parent, true, true);
        TextDisplayHelper.TextLine("Description: " + description, parent, true);
        TextDisplayHelper.TextLine("Type: " + type.ToString(), parent, true);
    }
}
以及各种儿童课程,如“讲师活动”:

public class LecturePart_Activity : LecturePart_Base
{
    private List<LecturePartType> followupTypes = new List<LecturePartType>();
    private string desiredEffect;

    public void Initialize(string partName, string description, LecturePartType type, List<LecturePartType> followupTypes, string desiredEffect)
    {
        base.Initialize(partName, description, type);
        this.followupTypes = followupTypes;
        this.desiredEffect = desiredEffect;
    }

    public override void Display(Transform parent)
    {
        base.Display(parent);
        TextDisplayHelper.TextLine("Desired Effect: " + desiredEffect, parent, true);
    }
}
公共课堂讲师团队活动:讲师团队基地
{
私有列表followupTypes=新列表();
私有字符串desiredEffect;
public void Initialize(字符串部件名、字符串描述、讲师部件类型、列表后续类型、字符串desiredEffect)
{
初始化(零件名称、描述、类型);
this.followupTypes=followupTypes;
this.desiredEffect=desiredEffect;
}
公共替代无效显示(变换父对象)
{
基本显示(父级);
TextDisplayHelper.TextLine(“所需效果:+desiredEffect,parent,true”);
}
}
我已经制作了一个“显示”方法来轻松地循环它们,并制作了一个助手脚本来根据需要显示文本,当构建完成并且需要显示它们时

我正在努力的是基于用户输入以一种有序和干净的方式构建这些类。用户可以选择在下拉列表中构建的演讲块,但无论我尝试什么,都会变成一团乱麻:“如果这种类型的演讲块将这些变量绑定到这些输入,然后在更改时更新它们”,等等

是否有任何设计原则或其他类似原则可以以干净的方式:

  • 根据下拉列表中选择的讲座部分类型,动态构建所需的用户输入(此处输入名称,此处输入说明等)
  • 按下按钮时,使用给定值初始化此类型的新类