मैं जानना चाहूंगा कि (और यदि ऐसा है तो) एक सामान्य वर्ग घोषणा में एक बाधा पैरामीटर के रूप में नामस्थान को परिभाषित करना संभव है।जेनेरिक क्लास घोषणा के साथ नेमस्पेस बाधा
यह क्या मेरे पास है:
namespace
MyProject.Models.Entities < - स्पष्ट मुझे लगता है कि
namespace
MyProject.Tests.BaseTest < DB में कायम किए जाने की मेरी कक्षाएं शामिल
अब मेरी 'बेसटेस्ट' कक्षा की घोषणा इस तरह दिखती है;
public class BaseTest<T>
यह BaseTest
करता है छोटे से अधिक सभी संस्थाओं है कि परीक्षण के दौरान डेटाबेस में जोड़ा गया था हटाने से (लेखन के समय)। तो आम तौर पर मैं एक परीक्षण वर्ग घोषित जाता है कि उसे:
public class MyEntityRepositoryTest : BaseTest<MyEntity>
मैं करना चाहते हैं क्या निम्न जैसा कुछ है:
public class BaseTest<T> where T : <is of the MyProject.Models.Entities namespace>
अब मुझे पता है कि यह पूरी तरह से संभव हो जाएगा हूँ बस एक 'बेसएन्टीटी' कक्षा घोषित करें जिसमें से MyProject.Models.Entities
नामस्थान के भीतर बनाई गई सभी संस्थाएं उत्तराधिकारी होंगी;
public class BaseTest<T> where T : MyBaseEntity
लेकिन ... मुझे वास्तव में आवश्यकता नहीं है, या मैं चाहता हूं। इसके अलावा मैं विरासत के साथ एक ओआरएम और मैपिंग इकाइयों का उपयोग कर रहा हूं, हालांकि संभव है, जटिलता की एक परत जोड़ती है जो आवश्यक नहीं है।
तो, क्या नामस्थान में एक सामान्य वर्ग पैरामीटर को बाधित करना संभव है और एक विशिष्ट प्रकार नहीं है?
सहमत हुए। और, यदि आप जिस प्रकार को अनुमति देना चाहते हैं वह एक अलग असेंबली में है तो 'InternalsVisibleToAttribute' में देखें। मैं नियमित रूप से विभिन्न असेंबली में यूनिट परीक्षणों के साथ इसका उपयोग करता हूं। –
यह एक शर्म की बात है, मुझे आश्चर्य है कि आप लैम्ब्डा अभिव्यक्तियों या कुछ के साथ कुछ नहीं कर सकते हैं। चिंता न करें, कि 'आंतरिक' समाधान मेरी आवश्यकताओं को आधे रास्ते से पूरा करता है। मार्गदर्शन के लिए धन्यवाद। – SomeGuy
@ सोमगुई, जहां तक मुझे पता है, लैम्ब्डा अभी भी केवल एक रनटाइम चीज है (अभिव्यक्तियों के साथ उपयोग किए जाने के अलावा, लेकिन फिर भी वे संकलन समय पर निष्पादन योग्य नहीं हैं)। इस बारे में कुछ चर्चा हुई है कि क्या संभावित सी # 5.0 कंपाइलर-ए-ए-सर्विस सुविधा संकलक के कुछ अनुकूलन की अनुमति दे सकती है, हालांकि मुझे यह संदेह है कि अगर हम इसे कभी देखेंगे। –