- C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
750 :デフォルトの名無しさん[]:2015/08/27(木) 18:33:33.61 ID:4ooez7+r - 以下のようなことをしたいのですが、
メソッド名が重複するため上手くいきません。 ある変数のスーパークラスを上書くようなことはできないのでしょうか? public abstract class A{ public abstract MyClass instance {get;} } public abstract class B<T> : A where T ; MyClass{ public T MyClass instance {get;} }
|
- C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
755 :デフォルトの名無しさん[]:2015/08/27(木) 21:05:28.92 ID:4ooez7+r - TはMyClassの継承関係です。
AとかBじゃ分かりにくいですね。 public abstract class 田中{ public abstract 行動 instance {get;} } public abstract class 修行した田中<料理> : 田中 where T ; 行動 { public 料理 instance {get;} } はじめからTつければいいじゃんとか思うかもしんないけど、 ジェネリックの共変性とかの問題があったりしてこんな実装になってます。
|
- C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
760 :デフォルトの名無しさん[]:2015/08/27(木) 21:46:52.77 ID:4ooez7+r - public abstract 行動 strategy {get;} を
public override 料理 strategy {get;} に上書きしたいです。 まとめるとこうです。 1.オブジェクトの行動を戦略ポリモーフィズムで実現したい 2.継承クラスから戦略をジェネリックに呼び出したい 3.基底クラスの戦略呼び出しは継承クラスの戦略を呼び出す(abstract) 4.ジェネリックの共変性(.net3.5を利用)の問題で3を基底<T>およびメンバTとするのは、 その他のオブジェクトでキャストが膨大に発生するため、ジェネリックを持たない基底クラスを用意した
|
- C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
761 :デフォルトの名無しさん[]:2015/08/27(木) 21:56:46.79 ID:4ooez7+r - >>758
そういうことです! たぶんできました!ありがとうございます
|