मैं सच में यकीन है कि कैसे करने के लिए शीर्षक इस सवाल लेकिन मूल रूप से मैं इस तरह एक अंतरफलक है नहीं कर रहा हूँ:विरासत डिजाइन। अच्छा अभ्यास?
public interface IFoo
{
string ToCMD();
}
absract वर्गों के एक जोड़े जो की तरह IFoo लागू:
public abstract class Foo : IFoo
{
public abstract string ToCMD();
}
public abstract class Bar : IFoo
{
public abstract string ToCMD();
}
तो वर्ग है जो वारिस फू और बार:
public class FooClass1 : Foo
{
public override string ToCMD()
{return "Test";}
} ///there are about 10 foo classes.
public class BarClass : Bar
{
public override string ToCMD()
{return "BarClass";}
} ///about the same for bar classes.
मैं यह कर रहा हूँ ताकि जब मैं की तरह अपने कस्टम सूची है:
public class Store<T> : List<T> where T : IFoo {}
मैं फिर उस प्रकार को प्रतिबंधित कर सकता हूं जो इसमें जाता है लेकिन इंटरफ़ेस होने से यह अभी भी किसी भी प्रकार का IFoo ले जाएगा।
कुछ की तरह:
Store<Foo> store = new Store<Foo>(); //Only Foo types will work.
store.Add(new FooClass1()); //Will compile.
Store<IFoo> store = new Store<IFoo>(); //All IFoo types will work.
store.Add(new FooClass1()); //Will compile.
store.Add(new BarClass()); //Will compile.
मेरे सवाल यह है: यह इस बारे में जाने का एक ठीक तरीका है? या कोई बेहतर तरीका है?
संपादित करें: Picture->
मुझे यकीन नहीं था कि खाली इंटरफेस का उपयोग करना एक अच्छा विचार था। क्या यह? –
@ [नाथन डब्ल्यू]: एक खाली इंटरफ़ेस में कोई बात नहीं है, मुझे लगता है कि gcores केवल संक्षिप्त हो रहा है –
जो मैंने सोचा था, लेकिन मैं बस जांच कर रहा था। –