Web参照するとprivateのbyte型のメンバが消える – プログラミング – Home

Web参照するとprivateのbyt...
 
通知
すべてクリア

Web参照するとprivateのbyte型のメンバが消える


ももんが
 ももんが
(@ももんが)
ゲスト
結合: 18年前
投稿: 38
Topic starter  

ももんがです。

VisualStudio2005、C#でWebサービスを使ってるのですが
Webサービス側のプロジェクトに定義した独自のクラスをWebサービスの戻り値として使い
たいのですが、クライアント側からWeb参照の追加を行うとメンバが消えてしまいます。

独自のクラス
public class TestClass
{
private byte a;
public byte b;
}

クライアントから使うときは、スタブ?クラスができますよね。
それには、独自のクラスにあったprivateのメンバ
が消えてしまいます。

クライアント側のスタブクラス
public partial class TestClass
{
private byte bField;

public byte b {
ゲッターとセッター
}
}

これって、そういうものなのでしょうか。
できれば、独自クラスのメンバの直接アクセスをしないクラスにしたいのです。


引用解決済
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

最近 C#はじめたものなんですけど
親クラスまたはオーバーライド元クラスに定義されている
privateにはアクセスできなくて当然では無いのでしょうか?

WEBサーバーにあるクラスをクライアント側で利用しようとするなら
なおさら、利用できないと思いますよ

private宣言はクラス内利用はできますけど
たとえ名前が同じでも別の場所で定義されたクラスならできなくて当然と思いますが

利用するためには、public にしなきゃいけないと思います
でもこの回答ですと質問の意に反しますよね

>private byte a;

>独自クラスのメンバの直接アクセスをしないクラスにしたいのです。
こうなってますよね

意味が不明なのですが?

独自のクラスの中にゲッターとセッター関数だけをpublicにするだけじゃ
駄目なんでしょうか?


返信引用
ももんが
 ももんが
(@ももんが)
ゲスト
結合: 18年前
投稿: 38
Topic starter  

>独自のクラスの中にゲッターとセッター関数だけをpublicにするだけじゃ
>駄目なんでしょうか?
スタブ化されるときのルールがよくわかっていなくて
変な質問してしまいました。

試してみたら
privateのものは、アクセサが追加される。
private+アクセサありのものは、そのままスタブにもある。
なので、アクセサをpublicにしたらたしかにスタブにも現れましたが

スタブ化されるときって
ふつうのpublicメソッドもなくなってしまうのですね。

今回のケースは、アクセサではなく、アクセサ以外の
メソッドでセットされるprivate変数がある場合なのですが

この場合は、
private変数も
そのメソッドもなくなってしまいます。

アクセサもgetしかないと、
スタブ化した場合は、private変数、アクセサともにスタブには
存在しなくなりますね。

スタブクラスは、こういうものだと割り切るしかないのでしょうか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました