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

本文关键字:相似 属性 对象 同类 两个 绑定 | 更新日期: 2023-09-27 18:01:14

在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有可能吗?

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

如果您不关心接口的实现方式,可以让两个类实现一个接口。

例如:

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; }
}

接口是一种契约,它提供了实现类必须定义的属性和方法的定义。你可以在这里阅读更多关于接口的信息。

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

如果不添加额外的代码,就无法做到这一点。

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

现在,您可以在一个(或两个(上包含implicit运算符,以便允许在两者之间进行隐式转换。

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; }
}

但是,这是尽可能接近于支持该语法的。