Можно ли с помощью CodeDOM создать свойство с помощью открытого и защищенного методов установки? Цель состоит в том, чтобы добиться чего-то похожего на следующее.
[Serializable]
public class Wrapper {
public Wrapper() { }
private string _Field;
public string Field { get; protected set; }
}
У меня есть большой API на основе COM, для которого я хочу скомпилировать оболочку .Net, чтобы с ней было проще использовать такие функции .Net, как LINQ, Reflection, наследование и сериализация. Единственно возможный способ - автоматизировать большую часть этой работы с помощью генерации кода.
Эти объекты содержат некоторые свойства только для чтения, которые я хочу показать через сериализацию, для которой требуется установщик свойств. Но до тех пор, пока я не нашел никаких способов установить сеттер защищенным или подобным.
Одним из способов может быть пометить свойство как не сериализуемое и сериализовать _Field, но поскольку одной целью для сериализованного вывода является веб, мне нужно было бы приписать закрытому члену все возможные атрибуты сериализатора, направьте сериализатор, чтобы использовать имя очистителя (без подчеркивания) для сериализации. По той же причине я считаю, что пользовательская сериализация невозможна.
Не так важно, чтобы я мог точно его десериализовать, т.е. не критично, что значение остается в своем первоначальном значении во время / посредством десериализации. Свойства доступны только для чтения, чтобы избежать путаницы, поскольку пользователь API не может пытаться изменить поля только для чтения и интересуется, почему они ни на что не влияют.