Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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# - Fatal编程技术网

如何在c#中获得对象的不同属性?

如何在c#中获得对象的不同属性?,c#,C#,我有一个具有如下属性的类: public class Car { public long No { get; set; } public string Name { get; set; } public int Door { get; set; } public Color Color { get; set; } public int MaxSpeed { get; set; } publi

我有一个具有如下属性的类:

public class Car 
    {
        public long No { get; set; }
        public string Name { get; set; }
        public int Door { get; set; }
        public Color Color { get; set; }
        public int MaxSpeed { get; set; }
        public int Price { get; set; }
    } 
(这个班就是一个例子,我真正的班比它大。)

在我的程序中,我需要从db中获得这个类的不同属性(不是每次都是所有属性)。例如,在一种情况下,我需要一些汽车的名称颜色,在另一种情况下,我需要名称车门价格
我想创建一个支持所有差异条件的方法。我知道我可以使用'params''enum'创建它,但我正在研究最好的方法。谢谢

您可以在调用属性时查询它

public int Value{
      get{
         int myValue = getValue();
         return myValue;
      }
}
试着这样做:

public object[] GetProperties(int state)
{
 object[] temp;
 switch(state)
 {
    case(0):
    {
        temp=new object[]{Name,Color};
    }break;
    case(1):
    {
        temp=new object[]{Name,door};
    }
 }
}

在这之后,您知道,什么需要返回您的函数,并且很容易解析返回结果

我假设“得到不同的属性”实际上意味着“得到不同的属性”,对吗?除此之外,你的问题一点也不清楚。如果
Car
正确初始化,什么会妨碍您使用所需的属性?您是否使用Entity Framework从db或其他与LINQ兼容的ORM获取数据?除非获取某些属性特别昂贵(例如,因为它们来自不同的表)您最好始终归还整辆
汽车。去DB的最大时间损失是往返;一旦你得到一个栏目,再增加十个栏目的成本就很小了。简单的答案是:不要。只需加载
汽车
对象并使用所需的属性即可。加载它们看起来都不昂贵,所以这一切都很好,而且代码复杂性会大大超过性能上的任何提高(不会有任何提高)。这应该不是问题,但如果您想要检索部分行,可以创建几个类。汽车是彩色的。或者创建一些接口。但这可能会带来一些其他问题。这就是类型化与非类型化之争