Одна из моих функций WCF возвращает объект, который имеет переменную-член типа из другой библиотеки, которая находится вне моего контроля.Я не могу украсить классы этой библиотеки.Фактически, я даже не могу использовать DataContractSurrogate, потому что классы библиотеки имеют закрытые переменные-члены, которые необходимы для работы (т. Е. Если я возвращаю объект без этих закрытых переменных-членов, публичные свойства выдают исключения).что совместимость для этого конкретного метода не требуется (по крайней мере, пока владельцы этой библиотеки не смогут пересмотреть, чтобы сделать их объекты сериализуемыми), могу ли я использовать WCF, чтобы возвратить этот объект так, чтобы он мог по крайней мере использоваться a.NET клиент?
Как мне это сделать?
Обновление: я добавляю псевдокод ниже ...
// My code, I have control
[DataContract]
public class MyObject
{
private TheirObject theirObject;
[DataMember]
public int SomeNumber
{
get { return theirObject.SomeNumber; } // public property exposed
private set { }
}
}
// Their code, I have no control
public class TheirObject
{
private TheirOtherObject theirOtherObject;
public int SomeNumber
{
get { return theirOtherObject.SomeOtherProperty; }
set { // ... }
}
}
Я пытался добавить DataMember вмой экземпляр их объекта, делая его общедоступным, используя DataContractSurrogate и даже вручную потоковую передачу объекта.Во всех случаях я получаю некоторую ошибку, которая в конечном итоге приводит к тому, что их объект не является явно сериализуемым.