我正在寻找一种方法来创建一个具有一组静态属性的类.在运行时,我希望能够从数据库向此对象添加其他动态属性.我还想为这些对象添加排序和过滤功能.
我如何在C#中执行此操作?
我搜索谷歌但结果却是误会.
这是一个代码流程:
public class Store
{
public dynamic GetList(List<string> propertyFields)
{
// Body here
// for in list propertyFields. Such as: ["Code", "Name", "Address", ...]
// dynamic result = ...
// result.Code = "value", result.Name = "abc", result.Address = "homeless", result.... = "..."
// return result
}
}
Run Code Online (Sandbox Code Playgroud)
方法返回一个动态对象.
propertyFields是字段名称列表.当我在列表中传递4个字符串时,dynamic有4个属性字段值(稍后).
当我调用这个方法时:
Store store = new Store();
var rs = store.GetList(["Code","Name","Address"])
Console.WriteLine(rs[0].Code)
Run Code Online (Sandbox Code Playgroud)
这是我的观点.
我的问题:是否有可能在C#中做到这一点?
我今天早些时候遇到了这个问题,由于我找不到令人满意的解决方案,我决定改变我的班级设计,并且具有单独的属性,如标签1,标签2,标签3等.
我的主要问题是我需要将网格绑定到包含其他属性列表的对象,我需要将列表中的每个项目显示为单独的列,我无法做到.因此,我正在分别声明变量.原始问题在这里......
现在,我正面临着一个最常见的设计问题,可能是每个程序员在某些时候都有这个问题.这是演示它的代码,
for (int i = 0; i < tags.Length; ++i) // Length not known here.
{
if(i==0){
tag1 = tags[0];
}
else if(i == 1){
tag2 = tags[1];
}
else if(i == 2){
tag3 = tags[2];
}
....
}
Run Code Online (Sandbox Code Playgroud)
这tags是一个字符串数组.
我想知道是否有更优雅的方式来做到这一点.另外需要注意的是,这个循环的效率随着它的进展而降低,因为随着迭代次数的增加,它必须检查更多的条件.如果我们知道每个条件在所有迭代中只变为一次,那么我们可以在条件成为真之后移除它.