Sei que existem algumas perguntas que tratam disso, mas as respostas geralmente seguem as linhas de recomendar um Dicionário ou Coleção de parâmetros, o que não funciona na minha situação.
Estou usando uma biblioteca que funciona por meio da reflexão para fazer muitas coisas inteligentes com objetos com propriedades. Isso funciona com classes definidas, bem como classes dinâmicas. Preciso dar um passo adiante e fazer algo nesse sentido:
public static object GetDynamicObject(Dictionary<string,object> properties) {
var myObject = new object();
foreach (var property in properties) {
//This next line obviously doesn't work...
myObject.AddProperty(property.Key,property.Value);
}
return myObject;
}
public void Main() {
var properties = new Dictionary<string,object>();
properties.Add("Property1",aCustomClassInstance);
properties.Add("Property2","TestString2");
var myObject = GetDynamicObject(properties);
//Then use them like this (or rather the plug in uses them through reflection)
var customClass = myObject.Property1;
var myString = myObject.Property2;
}
A biblioteca funciona bem com um tipo de variável dinâmica, com propriedades atribuídas manualmente. No entanto, não sei quantas ou quais propriedades serão adicionadas de antemão.