के लिए क्रॉस रेफरेंसिंग कक्षाएं मैं सी # जेनेरिक में प्रवेश करने की कोशिश कर रहा हूं और राज्य पैटर्न के साथ एक राज्य मशीन बनाई है और अब मैं रिफैक्टर करने की कोशिश करता हूं।सी # जेनेरिक, राज्य पैटर्न
मेरे पास एक राज्य है, जिस पर यह उस वस्तु का संदर्भ है जिस पर यह काम कर रहा है।
public abstract class AbstractState<T> where T : StatefulObject {
protected T statefulObject;
public AbstractState(T statefulObject) {
this.statefulObject = statefulObject;
}
}
और मेरे पास ऑब्जेक्ट है जिसमें राज्य हैं, इसका वर्तमान स्थिति का संदर्भ होना चाहिए।
public abstract class StatefulObject<T> : MonoBehaviour where T : AbstractState<StatefulObject<T>> {
public T state;
}
लेकिन यह काम नहीं करता है ("प्रकार के रूप में सामान्य प्रकार या विधि में प्रकार पैरामीटर 'टी' नहीं किया जा सकता")।
public class Monster : StatefulObject<MonsterState> {
}
public abstract class MonsterState : AbstractState<Monster> {
}
यह संभव है:
कुछ इस तरह मैं क्या हासिल करना चाहते हैं? यदि यह इस तरह से नहीं है, तो क्या कोई और है? धन्यवाद।
आप 'स्टेटफुल ऑब्जेक्ट' को सामान्य प्रकार (2 स्निपेट) के रूप में कैसे घोषित कर रहे हैं और इसे गैर-सामान्य प्रकार (पहला स्निपेट) के रूप में उपयोग कर रहे हैं? –