Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Oop C#和#x2B;课堂设计_Oop_C# 3.0 - Fatal编程技术网

Oop C#和#x2B;课堂设计

Oop C#和#x2B;课堂设计,oop,c#-3.0,Oop,C# 3.0,我在理解如何设计一个类时有点困难 我希望能够将n个系统字段与自定义字段一起输出到报表中 我想要一个简单的接口方法,名为: ICollection GetFieldDefinitions() 在内部,这应该得到我需要在报告中显示的所有字段 第二个方法将返回字段及其值: ICollection<Field> GetFieldDefinitionsWithValues(T src); ICollection GetFieldDefinitionsWithValues(T src); T

我在理解如何设计一个类时有点困难

我希望能够将n个系统字段与自定义字段一起输出到报表中

我想要一个简单的接口方法,名为:

I
Collection GetFieldDefinitions()

在内部,这应该得到我需要在报告中显示的所有字段

第二个方法将返回字段及其值:

ICollection<Field> GetFieldDefinitionsWithValues(T src);
ICollection GetFieldDefinitionsWithValues(T src);
T是填充每个字段信息的来源,例如,如果我传入Company,字段定义如果它包含CompanyName,我将在Company表上进行查找,检索信息并将其添加到字段中

public Class SystemFieldCompany
{
    IDictionary<string,Field> list;
    private readonly ValidationEngine _val;
    public SystemFieldCompany(ValidationEngine val)
    {
      _val = val;
      list = new Dictionary<string,Field>();
    }

    public ICollection<Field> GetFields()
    {

     list.add("id",new Field{name = "id", value = "5"});
     list.add("nameofcompany",new Field{name = "nameofcompany", value = "super guys"});      
     return list.Values;   
    }

    //pass in model object with values on it, set up fields, then pass back all fields
    ICollection<Field> GetFieldsWithValues(T object);
}
公共类SystemFieldCompany
{
词典目录;
私有只读验证引擎;
公共系统字段公司(ValidationEngine val)
{
_val=val;
列表=新字典();
}
公共ICollection GetFields()
{
添加(“id”,新字段{name=“id”,value=“5”});
添加(“公司名称”,新字段{name=“公司名称”,value=“超级家伙”});
返回列表。值;
}
//传入带有值的模型对象,设置字段,然后传回所有字段
ICollection GetFieldsWithValues(T对象);
}
上面的这个类应该是一个具体的类吗? e、 g.var fields=newfieldclass().GetFields()


还是我应该用作文?如何通过接口实现这一点?

抽象类是您需要的

public abstract class FieldBase
{
ICollection<Field> _data=new List<Field>();

abstract void DoValidationOrSomething();

ICollection<Field> virtual GetFields()  //perform validation internally - return back the object 
{
DoValidationOrSomething();
return _data;
}

T virtual UpdateFields(ICollection<Field> fields);  //pass in model object with values on it, set 
{
_data.Clear();
_data.AddRange(fields);
}
up fields, then pass back all fields
ICollection<Field> virtual GetFieldsWithValues(T object)
{
return _data.Where(f=>f.Name=T);
}
}

你可能想澄清/重新表述你的问题,因为你真正想要实现的目标并不那么明确。如果没有尽可能多的信息,一个关于做某事的最佳方式的问题通常是无法回答的situation@Grizzly:我已经重写了,希望这更好?所以我应该实例化这个类?var s=new SomeTable()?我只在某一点上需要这些字段,所以我毫无理由地实例化了一个类?接口不是更好吗?接口只是类将实现一个或多个项的契约。不能实例化接口。
public class SomeTable:FieldBase
{
public void DoValidationOrSomething()
{
//per class validation here
}
}