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
C# 一种引用所有类的变量类型_C#_Oop - Fatal编程技术网

C# 一种引用所有类的变量类型

C# 一种引用所有类的变量类型,c#,oop,C#,Oop,假设我有两门课,比如: public class Pineapple { public bool Ripe{get;set;} public string State{get;set;} } 以及: public class Bean { public string Type{get;set;} public bool Bloats{get;set;} } 我想在一个方法中返回这两个类的可观察集合。这就是我的意思,而不是拥有: public ObservableCollection<P

假设我有两门课,比如:

public class Pineapple
{
public bool Ripe{get;set;}
public string State{get;set;}
}
以及:

public class Bean
{
public string Type{get;set;}
public bool Bloats{get;set;}
}
我想在一个方法中返回这两个类的可观察集合。这就是我的意思,而不是拥有:

public ObservableCollection<Pineapple> GetPineapples()
{
//some code that fetches pine apples
}
publicobservableCollection getPinepples()
{
//一些获取松树苹果的代码
}
还有另一种方法:

public ObservableCollection<Bean> GetBeans()
{
//some code that fetches beans
}
publicobservableCollection GetBeans()
{
//一些获取bean的代码
}

我该如何放置@T ie ObservableCollection,它引用这两个类

您可以拥有基类,例如
Plant
,菠萝和
Bean都应该从中继承(或者接口,例如
IPlant
,两者都应该实现)

然后,您可以执行以下操作:

public class Plant {}

public class Pineapple : Plant ...

public class Bean: Plant ...

public ObservableCollection<Plant> GetPlants()
公共类植物{}
公共类菠萝:植物。。。
公共类豆类:植物。。。
公共可观测采集设备()

您可以拥有基类,例如
Plant
菠萝
Bean
都应该继承自基类(或者接口,例如
IPlant
,两者都应该实现)

然后,您可以执行以下操作:

public class Plant {}

public class Pineapple : Plant ...

public class Bean: Plant ...

public ObservableCollection<Plant> GetPlants()
公共类植物{}
公共类菠萝:植物。。。
公共类豆类:植物。。。
公共可观测采集设备()

您可以拥有基类,例如
Plant
菠萝
Bean
都应该继承自基类(或者接口,例如
IPlant
,两者都应该实现)

然后,您可以执行以下操作:

public class Plant {}

public class Pineapple : Plant ...

public class Bean: Plant ...

public ObservableCollection<Plant> GetPlants()
公共类植物{}
公共类菠萝:植物。。。
公共类豆类:植物。。。
公共可观测采集设备()

您可以拥有基类,例如
Plant
菠萝
Bean
都应该继承自基类(或者接口,例如
IPlant
,两者都应该实现)

然后,您可以执行以下操作:

public class Plant {}

public class Pineapple : Plant ...

public class Bean: Plant ...

public ObservableCollection<Plant> GetPlants()
公共类植物{}
公共类菠萝:植物。。。
公共类豆类:植物。。。
公共可观测采集设备()

您还可以使用名为ViewModel的工具(它通常用于web,只是一个代理类,提供了有关不同类的一些信息),您可以为您拥有的每个类添加c'TOR

public class Info
{
    public string Info1 { get; set; }
    public bool Info2 { get; set; }

    public Info(Pineapple p)
    {
        this.Info1 = p.State;
        this.Info2 = p.Ripe;
    }

    public Info(Bean b)
    {
        this.Info1 = b.Type;
        this.Info2 = b.Bloats;
    }
}
附言


但是,如果你有很多类,你应该考虑使用抽象类/接口。

你也可以使用一种叫做VIEWMIDE的东西(它通常用于Web,它只是一个代理类,它提供了关于不同类的一些信息),你可以为你的每一个类添加CcTor;p>

public class Info
{
    public string Info1 { get; set; }
    public bool Info2 { get; set; }

    public Info(Pineapple p)
    {
        this.Info1 = p.State;
        this.Info2 = p.Ripe;
    }

    public Info(Bean b)
    {
        this.Info1 = b.Type;
        this.Info2 = b.Bloats;
    }
}
附言


但是,如果你有很多类,你应该考虑使用抽象类/接口。

你也可以使用一种叫做VIEWMIDE的东西(它通常用于Web,它只是一个代理类,它提供了关于不同类的一些信息),你可以为你的每一个类添加CcTor;p>

public class Info
{
    public string Info1 { get; set; }
    public bool Info2 { get; set; }

    public Info(Pineapple p)
    {
        this.Info1 = p.State;
        this.Info2 = p.Ripe;
    }

    public Info(Bean b)
    {
        this.Info1 = b.Type;
        this.Info2 = b.Bloats;
    }
}
附言


但是,如果你有很多类,你应该考虑使用抽象类/接口。

你也可以使用一种叫做VIEWMIDE的东西(它通常用于Web,它只是一个代理类,它提供了关于不同类的一些信息),你可以为你的每一个类添加CcTor;p>

public class Info
{
    public string Info1 { get; set; }
    public bool Info2 { get; set; }

    public Info(Pineapple p)
    {
        this.Info1 = p.State;
        this.Info2 = p.Ripe;
    }

    public Info(Bean b)
    {
        this.Info1 = b.Type;
        this.Info2 = b.Bloats;
    }
}
附言



但是如果你有很多类,你应该考虑使用抽象类/接口。< /P>使用<代码>继承< /代码>如何?你可以创建一个基类,这些类从中获取属性,你可以有一个通用的基类来引用。我想实现一个接口,因为我有很多这样的类,它们具有非常相似的方法签名,例如FetchItems()可以返回菠萝或BeansSee@Andy的答案。这就是我指的。类似于这种模式的东西对您的案例很有帮助。在这里使用

继承如何?你可以创建一个基类,这些类从中获取属性,你可以有一个通用的基类来引用。我想实现一个接口,因为我有很多这样的类,它们具有非常相似的方法签名,例如FetchItems()可以返回菠萝或BeansSee@Andy的答案。这就是我指的。类似于这种模式的东西对您的案例很有帮助。在这里使用
继承如何?你可以创建一个基类,这些类从中获取属性,你可以有一个通用的基类来引用。我想实现一个接口,因为我有很多这样的类,它们具有非常相似的方法签名,例如FetchItems()可以返回菠萝或BeansSee@Andy的答案。这就是我指的。类似于这种模式的东西对您的案例很有帮助。在这里使用
继承如何?你可以创建一个基类,这些类从中获取属性,你可以有一个通用的基类来引用。我想实现一个接口,因为我有很多这样的类,它们具有非常相似的方法签名,例如FetchItems()可以返回菠萝或BeansSee@Andy的答案。这就是我指的。类似于该模式的内容将对您的案例有所帮助。适用于具有类似属性的类,但属性不相似但方法相似的类有哪些。@您可以将其放入基类中(或放入接口中,具体取决于您决定执行的操作)只有您计划实现的所有类所共有的属性/方法。如果没有这样的公共属性/方法-基类可以为空,在这种情况下,它将仅用作类层次结构的“根”,在集合的返回结果中可以使用的公共类型。结合使用接口和继承有帮助,但我希望只对具有类似属性的类执行ObservableCollection:PWorks,但属性为