C# 如何在c中从泛型接口获取T对象# 抽象类Point2D { 公共虚拟字符串X{get;set;} } 抽象类Point3D { 公共虚拟字符串X{get;set;} 公共虚拟字符串Y{get;set;} } 接口IPoint3D { T GetT(); } 类点:Point2D、IPoint3D { 公共点2d GetPoint2D() { 归还这个; } 公共点3d GetT() { return null;//如何返回point3D? } }

C# 如何在c中从泛型接口获取T对象# 抽象类Point2D { 公共虚拟字符串X{get;set;} } 抽象类Point3D { 公共虚拟字符串X{get;set;} 公共虚拟字符串Y{get;set;} } 接口IPoint3D { T GetT(); } 类点:Point2D、IPoint3D { 公共点2d GetPoint2D() { 归还这个; } 公共点3d GetT() { return null;//如何返回point3D? } },c#,generics,C#,Generics,我有两个抽象类,我试图将它们继承到另一个类中。如何从IPoint3D界面获取Point3D对象 有没有解决多重继承的方法 在您的情况下,您可以通过简单的继承来解决这个问题: abstract class Point2D { public virtual string X { get; set; } } abstract class Point3D { public virtual string X { get; set;

我有两个抽象类,我试图将它们继承到另一个类中。如何从IPoint3D界面获取Point3D对象


有没有解决多重继承的方法

在您的情况下,您可以通过简单的继承来解决这个问题:

    abstract class Point2D
    {
        public virtual string X { get; set; }
    }

    abstract class Point3D
    {
        public virtual string X { get; set; }
        public virtual string Y { get; set; }
    }

    interface IPoint3D<T>
    {
         T GetT();
    }

    class Point : Point2D, IPoint3D<Point3D>
    {

        public Point2D GetPoint2D()
        {
         return this;
        }

        public Point3D GetT()
        {
            return null; // how to return point3D?
        }
    }
我仍然希望这是一个例子,因为2D空间中的点不是3D空间中忽略一个坐标的点。。。更令人沮丧的是,2D空间中的一个点需要两个坐标,X和Y,而不仅仅是一个。但这是做这件事的语法


您的p/Invoke方法应该不在这两个类中。查看最佳实践。

除了
点的实例
不是
点3D的实例之外。C#就是不支持这样的类的多重继承。
Point3D
Point2D
有什么共同点?这两者之间没有关系。如果您确实希望从该方法中获得
Point3D
,那么您不能在该方法中创建
Point3D
实例,设置属性
X
并返回它吗?是否有任何解决方法来执行多重继承?您似乎有XY问题。你的代码做了奇怪的事情,因为你的逻辑做了奇怪的事情。三维空间中的点不是二维空间中的点。可以将三维空间中的点投影到二维空间,但这不是一个简单的无参数操作。至少需要在三维坐标中定义二维空间。
abstract class Point2D
{
    public virtual string X { get; set; }
}

abstract class Point3D : Point2D
{
    public virtual string Y { get; set; }
}

class Point : Point3D
{
    // does not need extra function, this *is* a Point2D AND a Point3D
}