Это должно скомпилировать и работать.

даю, что есть один из двух ответов на этот вопрос, либо невозможный, либо чрезвычайно простой, и я упустил очевидный запрос Google.

Основная проблема заключается в том, что у меня есть общий объект, передаваемый черезEventHandler который упаковывает объект и запутывает истинный тип; только во время выполнения я знаю, что это за объект.

По общему признаниюdynamic Ключевое слово может обойти проблему, но я хотел бы не потерять IntelliSense и все остальное, если я могу избежать этого. Плюс, это не решает не зная, что каждое из свойств универсального объекта является без огромного количества размышлений.

РЕДАКТИРОВАТЬ: Идея состоит в том, чтобы иметь возможность определить истинный тип объекта в параметре метода, а затем привести этот объект к истинному типу, не зная его заранее. Это всего лишь упрощенный пример. В штучной упаковке, возможно, был неправильный термин.

Пример:

public class Program
{
    static void Main(string[] args)
    {
        var container = new Container<Containee>(
            new Containee
            {
                Property1 = Guid.NewGuid(),
                Property2 = "I'm a property!",
                Property3 = DateTime.Now
            }
        );

        var boxed = (object)container;

        var originalType = boxed.GetType();

        // DOES NOT COMPILE: would like an operation like this
        // EDIT: Request for more detail
        var actualType = boxed as originalType;
        actualType.Entity.Property2 = "But I like this better.";
    }
}

public class Containee
{
    public Guid Property1 { get; set; } 
    public string Property2 { get; set; }
    public DateTime Property3 { get; set; }
}

public class Container<T>
{
    public Container(T entity)
    {
        Entity = entity;
    }

    public T Entity { get; internal set; }
}

Понятно, что это не скомпилируется, поскольку на самом деле нет способа приведения в качестве переменной. Однако я надеюсь, что есть способ получить ссылку на реальный объект и тип или, по крайней мере, способ динамического воссоздания типа.

Я ожидаю, что есть кое-что простое, что я пропускаю, или лучший способ обойти это вообще. Суть в том, чтобы иметь возможность обернуть любой объект в контейнере и выяснить позже, что это было.

Ответы на вопрос(5)

Ваш ответ на вопрос