Я хотел бы создать программу для сопоставления переменной количества свойств на неизвестном объекте во время выполнения. Позвольте мне объяснить более подробно. Если бы я был объект под названием 'Object1' ищет что-то вроде этого ...динамически добавлять свойства к динамическому типу, то использовать этот тип
public class Object1()
{
public unknownType1 Property1 { get; set; }
public unknownType2 Property2 { get; set; }
}
Тогда мы еще один объект под названием 'Object2', который выглядит примерно так ...
public class Object2()
{
public unknownType1 Property1 { get; set; }
public unknownType3 Property3 { get; set; }
}
I» хотел бы сопоставить эти объекты динамически во время выполнения, чтобы создать что-то вроде этого ...
public class Object3()
{
public unknownType1 Property1 { get; set; }
public unknownType2 Property2 { get; set; }
public unknownType3 Property3 { get; set; }
}
Обратите внимание, что оба объекта один и то же property1. Я уже изучал ExpandoObject, однако, поскольку я понятия не имею, какой тип объектов или свойств будет во время компиляции, я не думал, что это будет работать, поскольку Exapando вводит типы. Кто-нибудь имеет предложение о том, как подойти к этому?
Итак, что бы вы сделали, если у обоих объектов был «Свойство1», типы которого не были равны? Это ошибка, или же 'Property1' сам является' dynamic' или 'object'? Как насчет методов на объектах? Вы можете извлечь из «DynamicObject» и реализовать свою собственную логику, но мне кажется, что вам будет намного проще использовать старомодный «Словарь <строка, объект>», видя, что все так динамично. –
Подумайте об этом как о полном внешнем соединении между object1 и object2, чтобы создать список объектов3, где есть соответствующие свойства1. Эти неизвестные типы объектов будут содержать только данные, аналогичные объектам или объектам данных. Для целей этого примера меня интересуют только свойства. Другие методы или значения будут проигнорированы. Эти объекты и типы свойств будут загружаться через ссылки на сборки, а затем экземпляры создаются динамически. Отвечает ли это на ваш вопрос? – Thundter
Под «соответствием' Property1's », вы имеете в виду, что вы точно знаете, что' Object1' и 'Object2' используют один и тот же тип для своих' Property1's? В SQL-выражении 'OUTER JOIN' будет генерировать * два *' Property1' столбца, по одному для каждого объекта, и вам придется их псевдоним, если вы хотите получить к ним доступ - если вы буквально не означаете что-то вроде WHERE Object1 .Property1 = Object2.Property1'. –