powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Спрятать на клиенте base class
3 сообщений из 3, страница 1 из 1
Спрятать на клиенте base class
    #39495037
LoLoShkA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем дня. Можно ли провернуть фокус чтобы спрятать на стороне клиента класс-родитель?

На стороне сервиса:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
[ServiceContract]
public class TestService
{ [OperationContract]
   void GetDate(string name, out List<Test1> blabla, out List<Test2>);
}
[DataContract,KnownType(typeof(Test1)), KnownType(typeof(Test2))]
public abstract class TestBase
{private readonly string _par1;
  private readonle string _par2;  
  protected TestBase(string par1, string par2)
{_par1 =par1;
 _par2 = par2;
}
  [DataMember] protected string par1 => _par1;
  [DataMember] protected string par2 => _par2;
}

[DataContract]
public class Test1 : TestBase
{
  private readonly string _par3;
  
  public Test1(string _par1, string _par2) : base (_par1, _par2)
  {
      _par3 = "AAAAA";
  }
  [DataMember] public string par3 => _par3;
}

[DataContract]
public class Test2 : TestBase
{
  private readonly string _par4;
  
  public Test2(string _par1, string _par2) : base (_par1, _par2)
  {
      _par4 = "BBBBB";
  }
   [DataMember] public string par4 => _par4;
}




И вроде все работает, но в wsdl Test1 и Test2 описаны

<xs:complexType name="Test1">
<xs:complexContent mixed="false">
<xs:extension base="tns:TestBase">
<xs:sequence>
<xs:element minOccurs="0" name="par3" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="TestBase">
<xs:sequence>
<xs:element minOccurs="0" name="par" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="par2" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>

и соответсвенно на стороне клиента, доступен класс TestBase.

На клиенте можно делать:
Service.TestBase aaa = new Service.TestBase();


Можно ли как-то указать чтобы сериализовались только класс Test1 и Test2 и клиент про класс TestBase ничего не знал, а мог оперировать только Test1 и Test2
Что бы стало что-то в таком духе

<xs:complexType name="Test1">
<xs:sequence>
<xs:element minOccurs="0" name="par" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="par2" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="par3" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
...
Рейтинг: 0 / 0
Спрятать на клиенте base class
    #39495055
LoLoShkA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю можно написать что-то в таком духе.
Но хотелось бы узнать про base practice? Или не заморачиваться и отдавать на клиента все?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
[DataContract,KnownType(typeof(Test1)), KnownType(typeof(Test2))]
public abstract class TestBase
{private readonly string _par1;
  private readonle string _par2;  
  protected TestBase(string par1, string par2)
{_par1 =par1;
 _par2 = par2;
}
  protected string par1 => _par1;
  protected string par2 => _par2;
}

[DataContract]
public class Test1 : TestBase
{
  private readonly string _par3;
  
  public Test1(string _par1, string _par2) : base (_par1, _par2)
  {
      _par3 = "AAAAA";
  }
  [DataMember] public string par3 => _par3;
  [DataMember] public string par1 => base.par1;
  [DataMember] public string par2 => base.par2;
  
}
...
Рейтинг: 0 / 0
Спрятать на клиенте base class
    #39498583
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LoLoShkAКак я понимаю можно написать что-то в таком духе.
Но хотелось бы узнать про base practice? Или не заморачиваться и отдавать на клиента все?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
[DataContract,KnownType(typeof(Test1)), KnownType(typeof(Test2))]
public abstract class TestBase
{private readonly string _par1;
  private readonle string _par2;  
  protected TestBase(string par1, string par2)
{_par1 =par1;
 _par2 = par2;
}
  protected string par1 => _par1;
  protected string par2 => _par2;
}

[DataContract]
public class Test1 : TestBase
{
  private readonly string _par3;
  
  public Test1(string _par1, string _par2) : base (_par1, _par2)
  {
      _par3 = "AAAAA";
  }
  [DataMember] public string par3 => _par3;
  [DataMember] public string par1 => base.par1;
  [DataMember] public string par2 => base.par2;
  
}



отдавать всё и не париться
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Спрятать на клиенте base class
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]