質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

Q&A

解決済

3回答

2578閲覧

S2containerの代替コード

oraora

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

0グッド

0クリップ

投稿2019/02/22 02:27

編集2019/02/22 03:21

前提・実現したいこと

(初心者です)
C#で開発した業務アプリにて、Seasar2使用部分を削除しなければならないのですが、
修正箇所はおそらく突き止められたと思っているのですが、
では具体的な修正・追加方法がわからずにいます。

知恵をお貸しいただけないでしょうか?

発生している問題・エラーメッセージ

S2containerが今後使用できないため、代替処理のコードが必要

該当のソースコード

C#

1 2// S2コンテナからアンケート情報検索のためのコンポーネントを取得する. 3var selectHogeFlow = (BaseHogeSelectFlow)Seasar.Framework.Container.Factory. 4 SingletonS2ContainerFactory.Container.GetComponent(typeof(BaseHogeSelectFlow)); 5 6namespace Hoge.BusinessLogic 7{ 8 /// <summary> 9 /// HogeDB検索フロー. 10 /// </summary> 11 internal class HogeDbSelectFlow : BaseHogeSelectFlow 12 { 13 /// <summary> 14 /// コンストラクタ. 15 /// </summary> 16 public HogeDbSelectFlow() : base() 17 { 18 } 19 20 /// <summary> 21 /// 検索. 22 /// </summary> 23 /// <param name="HogeType">Hoge種別</param> 24 public override void Select(string HogeType) 25 { 26 var dbAccessor = new DbAccessor(); 27 28 // Hoge情報の取得DAO. 29 var selHogeDao = new SelectHogeDao(); 30 selHogeDao.HogeType = HogeType; 31 dbAccessor.AddDao(selHogeDao); 32 33 // DBアクセス実行. 34 dbAccessor.Execute(); 35 36 // 一度クリアする. 37 dbAccessor.ClearDao(); 38 39 // 問題情報の取得DAO. 40 var selQDao = new SelectQDao(); 41 selQDao.HogeId = selHogeDao.Hoge.HogeId; 42 dbAccessor.AddDao(selQDao); 43 44 // 解答方式の取得DAO. 45 var selAMDao = new SelectAMDao(); 46 selAMDao.HogeId = selHogeDao.Hoge.HogeId; 47 dbAccessor.AddDao(selAMDao); 48 49 // DBアクセス実行. 50 dbAccessor.Execute(); 51 52 Hoge = selHogeDao.Hoge; 53 QList = selQDao.QList; 54 AMList = selAMDao.AMList; 55 } 56 } 57} 58 59namespace Hoge.BusinessLogic 60{ 61 /// <summary> 62 /// 問題検索フロー基底. 63 /// </summary> 64 internal abstract class BaseHogeSelectFlow 65 { 66 /// <summary> 67 /// 問題情報. 68 /// </summary> 69 public Hoge Hoge { get; set; } 70 71 /// <summary> 72 /// 問題リスト. 73 /// </summary> 74 public List<Q> QList { get; set; } 75 76 /// <summary> 77 /// 解答方式リスト. 78 /// </summary> 79 public List<AM> AMList { get; set; } 80 81 /// <summary> 82 /// コンストラクタ. 83 /// </summary> 84 public BaseHogeSelectFlow() 85 { 86 QList = new List<Q>(); 87 AMList = new List<AM>(); 88 } 89 90 /// <summary> 91 /// 検索. 92 /// </summary> 93 /// <param name="HogeType">問題種別.</param> 94 public abstract void Select(string HogeType); 95 } 96} 97 98<?xml version="1.0" encoding="utf-8" ?> 99 100【app.dicon】 -------------------------------- 101 102<components> 103 104 <!-- ************************************************************ 105 Hoge.BusinessLogic.SurveyManager内で取得するコンポーネント. 106 ************************************************************ --> 107 108 <!-- 各質問情報の一括取得DAO --> 109 <component instance="prototype" class="Hoge.BusinessLogic.HogeDbSelectFlow"/> 110 <!-- 各質問情報を模擬データから取得 --> 111 <!-- <component instance="prototype" class="Hoge.BusinessLogic.HogeFileSelectFlow"/> --> 112 113 114 <!-- ************************************************************ 115 Hoge.HogeUI.Util.ARRProxy内で取得する 116 コンポーネント. 117 ************************************************************ --> 118 <!-- 解答結果DB登録フロー --> 119 <component instance="prototype" class="Hoge.BusinessLogic.ARDbRFlow"/> 120 <!-- 解答結果ファイル登録フロー --> 121 <!-- <component instance="prototype" class="Hoge.BusinessLogic.ARFileRFlow"/> --> 122 123</components> 124

試したこと

修正個所の特定まではできた(つもりでいます)。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/02/22 02:33 編集

この1行だけ提示されてもどうしようもないと思いますが。 コード全文提示しましょう
oraora

2019/02/22 03:22

追記しました。 ご指摘、ありがとうございます。
guest

回答3

0

削除するなら代替えがなければどうにもなりません。
使うのをやめることが決定したなら同等機能を探すか一から作ることになるでしょう。

変えなければならないのはこの一行だけではありません。

Seasar が提供していた全機能です。

投稿2019/02/22 02:46

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oraora

2019/02/22 03:26

ご回答、ありがとうございます。 初心者の私が"おそらく"の判断ですが、当アプリでSeasarに関連している部分を追記しました。 他のフレームワーク等を使用するのではなく、C#のコーディングで機能を補完させなければなりません。 以上、よろしくお願いします。
Zuishin

2019/02/22 03:36

「おそらく」では話になりません。手順としては次のようになります。 1 Seasar2 に依存した部分をすべて洗い出し、カプセル化してテストを作る 2 Seasar2 の参照を削除してコンパイルできることを確認する 3 テストが通るよう中身をコーディングする ただし初心者の場合はその前にデータベースが扱えるようになっていなければなりません。 学習期間をとってもらい、Entity Framework の学習をして実際にデータベースを自由に操作できるようになっている必要があります。 でないと運用はじめてからえらいことになります。 手に余ることをちゃんと責任者に報告し、応援をよこしてもらうか時間をもらうか相談してください。そこから先は責任者が考えることです。
Zuishin

2019/02/22 04:03

たとえばこのコードだけでも、Hoge とか QList とかが Seasar2 に依存しているように見えます。おそらくこれはグローバル変数ではありませんか? そうすると、それらを使うメソッドもすべて Seasar2 に依存していることになります。これらをすべて Seasar2 から切り離すために独自のクラスを作る必要があります。
oraora

2019/02/22 08:05

ご回答、ご意見、ありがとうございます。 今後の参考にさせていただきます。
guest

0

こんにちは。

では、「具体的な修正・追加方法」の一例を提示してみます。

  1. まずは、先にSeasar2への参照を完全に取り払います
  2. すると、めちゃめちゃコンパイルエラーが出るので、一つ一つ確認して修正します。足りない機能があったら変わりを探すか自分で作ります。
  3. エラーが無くなったら完成です。

以上です。

投稿2019/02/22 03:29

編集2019/02/22 03:30
tamoto

総合スコア4105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

selectHogeFlowに直接クラスを代入することで解決しました。

抽象的な質問で、申し訳ありませんでした。

投稿2019/02/22 08:07

oraora

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問