Я хотел бы отобразить 2 объекта, но я не хочу полагаться на сторонние инструменты - причина в том, чтобы помочь мне лучше понять, что могут делать эти сторонние инструменты.
У меня есть интерфейс, который имеет string
Foo
и bool
Bar
public interface ITest
{
string Foo { get; set; }
bool Bar { get; set; }
}
Мой первый класс под названием A
реализует ITest
public class A : ITest
{
public string Foo { get; set; }
public bool Bar { get; set; }
}
И, наконец, класс B
также реализует ITest, но имеет дополнительное свойство
public class B : ITest
{
public string Foo { get; set; }
public bool Bar { get; set; }
public int Other { get; set; }
}
Поскольку оба класса имеют общий интерфейс, как я могу привести один к другому?
var a = new A();
var b = new B();
a= b as A; //does not work but this would be ideal
Я не хочу наносить на карту, явно указав имена свойств.
Таким образом, обладание (где отображает конструктор B) также не является идеальным
var a = new A();
var b = new B(a); //not desired
Возможно ли это? Это будет означать, что будут скопированы только те свойства, которые были определены в интерфейсе.
Ответы наподобие C# отображают два сложных объекта не идеальны, так как я должен явно указать свойства.