Я использую Reflection.Emit
и TypeBuilder
для создания нового типа во время выполнения. Моя установка что-то вроде:Могу ли я задать тип поля внутри класса во время выполнения для вновь созданного типа в C#?
public class MyClass {
public object MyField = CreateInstanceOfNewType();
public MyClass() {}
}
Вопрос заключается в том, что MyClass.MyField
объявлена с типом object
и поэтому неявные операторы литые, которые существуют для нового типа не вызывается, когда литьевые типы присваиваются MyClass.MyField
. Есть ли способ установить тип поля для вновь созданного типа, чтобы он вел себя так же, как и в типичном случае?
Будет ли тип реализовывать известный интерфейс? Если это так, просто присвойте * object * переменной, введенной в качестве этого интерфейса. –
Неявные операторы литья не могут быть определены в интерфейсах. Это происходит вокруг изменения типа при назначении, но не позволит использовать неявные отбрасывания. –
Просьба описать вашу фактическую бизнес-проблему, вместо этого, невозобновляемое решение для неизвестной проблемы. Вы правы - C# не позволяет этому решению работать. Это не означает, что ваша проблема неразрешима. –