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

时间:2015-07-07 00:26:07

标签: 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 int Number { get; set; }
}

那么可以说t = t2某些人吗?

2 个答案:

答案 0 :(得分:2)

如果你不关心使用什么接口的实现,你可以让两个类都实现一个接口。

例如:

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

接口是一种契约,它提供了实现类必须定义的属性和方法的定义。您可以在interfaces here上阅读更多内容。

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

答案 1 :(得分:0)

如果没有额外的代码,不能,你不能这样做。

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

现在,您可以在一个(或两个)上包含一个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; }
}

但这与您支持该语法的距离非常接近。