前提・実現したいこと
TestServiceクラス内のメソッド(TestA)にテーブルAのDataSetを取得したAllDataという変数が定義されています。
そのAllDataの値を同じクラス内に定義されているメソッド(TestB)に渡し、使用できるようにしたいと考えております。
下記のように他の型にて引数定義されております。
現状は各メソッドにて個別に定義しております。
それをできれば各メソッドの引数定義は変更せずに、メソッド間での値の受け渡しを実現させたいのですが可能なのでしょうか?
C#
1public interface ITestInterface 2{ 3 TableADataSet GetAllTableA(); 4} 5 6public class TestInterface : ITestInterface 7{ 8 public TableDataSetA GetAllTableA() 9 { 10 //TableAの全件取得のコードが記載されています。 11 } 12}
C#
1public class TestService 2{ 3 public ITestInterface TestInterface { get; set; } 4 5 public TestA(TestClassRequest request) //別クラスのメソッドからの引数 6 { 7 var allData = TestInterface.GetAllTableA(); //TestBメソッドに渡したい 8 } 9 10 public TestB(TestTableCollection collection) 11 { 12 //現状は下記のように定義しています。 13 var allData = TestInterface.GetAllTableA(); 14 // ここでTestA内に定義された「allData」を受け取り後続処理内で使用したい 15 } 16}
補足情報(FW/ツールのバージョンなど)
OS:Windows10 Pro64bit
IDE:MicroSoft Visual Studio Community 2015
interface TestInterfaceの提示の意味が分かりませんが、
TestServiceクラスにて
private TableADataSet allData;
と宣言すれば良さそうですが、こういうことではないのでしたらもう少し説明が必要かもしれません。
public interface TestInterface とはなんですか? TestService はそれを継承してないし、どこにも使われてないようですが無視していいですか?
失礼いたしました。
TestAメソッド内のコードが記載ミスとなっていました。
修正いたします。
やってることがメチャクチャにしか見えません。interface というのが何だかわかってないようですけど?
修正されたものを見ましたが、結局先ほど書いたことで事足りる気がします。
SurferOnWww様
不備多く申し訳ありません。再度修正いたしました。
YamaGNZ様
基本的な質問になってしまうのですが、TestServiceクラス内での宣言というのはTestAメソッド外、かつそれより上位箇所で宣言するというこという認識で合っていますでしょうか?
> 不備多く申し訳ありません。再度修正いたしました。
interface というのが何だかわかってないですよね。話が通じてません。名前に I を付ければいいってものではありませんよ。そもそもそのコードはコンパイラは通るのですか? 質問して解決できる知識レベルに達してないと思います。勉強が必要かと。
メンバ変数について調べてください。
また、変数のスコープについて学習されたほうがいいでしょう。
TestInterface クラスがインスタンス化されていませんね。
var testObject = new TestInterface();
var allData = testObject.GetAllTableA();
上記のようにすると、allData が得られるのではないかと思います。
GetAllTableA はインターフェースのメソッドなので、静的メソッドではなくインスタンスメソッドでしょうし、呼び出すには () をつけなければいけません。
SurferOnWww様
コードがまだ未完成なため実行確認は取れておりません。
現状interfaceについてはっきりとした理解ができていないのも現実ですのでもっと勉強します。
YAmaGNZ様
それぞれに関してもう少し勉強してみます。
Zushin様
そちらの記載内容ですとインスタンス化が追加されたのみと見受けられます。
現状はTestA、TestBそれぞれでGetAllTableAを取得し使用している並列状態となっております。
今回の質問のゴールとしてはTestAでGetAllTableAを取得し、それを利用してTestBに受け渡す直列状態にできないものかと思い質問させていただきました。
内容がわかりずらく申し訳ありません。
主題はそこではありません。
クラス名.メソッド名
上記の場合、静的メソッドになり、インターフェースとは無関係になります。
また、メソッドを呼び出すには () をつけなければいけません。
> コードがまだ未完成なため実行確認は取れておりません
そんなコードはアップしないでほしい。最低限コンパイルは問題なく通って、質問者さんの問題・課題を説明できるものにしてください。
> 内容がわかりずらく申し訳ありません。
何故分かり難くなったか分かってないようですね。訳も分からないまま interface という余計なものを持ち出してきたからです。さらには、回答者は今回の課題には関係ない不要なものではないかと思いながらも、何なのか確認しようとしたのですが、話が通じないからラチが明かないということです。
回答1件
あなたの回答
tips
プレビュー