C# 绑定两个不同类但具有相似属性的对象

C# 绑定两个不同类但具有相似属性的对象,c#,C#,在C#中是否可以绑定两个不同类但具有相似属性的对象 例如: class Program { static void Main(string[] args) { test t = new test(); test2 t2 = new test2(); } } public class test { public int Number { get; set; } } public class test2 { public

在C#中是否可以绑定两个不同类但具有相似属性的对象

例如:

class Program
{
    static void Main(string[] args)
    {
        test t = new test();

        test2 t2 = new test2();
    }
}

public class test
{
    public int Number { get; set; }
}

public class test2
{
    public int Number { get; set; }
}

因此,如果不添加额外的代码,是否可以说
t=t2
somewhow?

,不,您不能这样做

即使它们“相似”,编译器也会将它们视为完全不同的类型,不能相互分配

现在,您可以在一个(或两个)上包含一个操作符,以便允许在两个操作符之间进行隐式转换

public class test
{
    public static implicit operator test(test2 t)
    {
        return new test(tt.Number);
    }

    public static implicit operator test2(test t)
    {
        return new test2(t.Number);
    }

   public int Number { get; set; }
}

但是,这已经接近于支持该语法了。

如果您不关心接口的实现是什么,您可以让这两个类实现一个接口

例如:

class Program
{
    static void Main(string[] args)
    {
        INumber t = new test();

        INumber t2 = new test2();
    }
}

public class test : INumber
{
    public int Number { get; set; }
}

public class test2 : INumber
{
    public int Number { get; set; }
}

public interface INumber
{
    int Number { get; set; }
}
接口是一种契约,它提供了实现类必须定义的属性和方法的定义。你可以阅读更多关于


当您的类实现共享接口时,您可以隐式地将一种类型转换为另一种类型,如上面的示例中所示。

否,无需某种类型的脚手架代码或外部库(如)。也许你能准确地描述你想要达到的目标?