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