Одна из моих функций WCF возвращает объект, который имеет переменную-член типа из другой библиотеки, которая находится вне моего контроля. Я не могу украсить классы библиотеки. На самом деле, я даже не могу использовать DataContractSurrogate, потому что классы библиотеки имеют частные переменные-члены, необходимые для работы (т. Е. Если я возвращаю объект без этих частных переменных-членов, исключения для публичных свойств исключают).WCF - Возвращаемый объект без сериализации?
Если я говорю, что интероперабельность для этого конкретного метода не требуется (по крайней мере, пока владельцы этой библиотеки не смогут пересмотреть, чтобы сделать их объекты сериализуемыми), возможно ли использовать WCF для возврата этого объекта, чтобы он мог по крайней мере, потребляется клиентом .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, и даже вручную потокового объекта. Во всех случаях я получаю некоторую ошибку, которая в конечном итоге приводит к тому, что их объект не является явным сериализуемым.
Вы изучали двоичную сериализацию? –
@Sergei: Я попытался вручную сериализоваться в двоичном формате с использованием BinaryFormatter, но получил исключение, не связанное с сериализацией. Считаете ли вы, что двоичная сериализация WCF может работать лучше с учетом этой ошибки? – Mayo