একটি অবৈধ জেনেরিক ধরণের যুক্তির জন্য সেরা ব্যতিক্রম


106

আমি বর্তমানে আনকন্সট্রেইনডেলডি এর জন্য কিছু কোড লিখছি যা এনামগুলির সাথে জেনেরিক পদ্ধতি রয়েছে।

এখন, আমার কাছে প্রচুর পদ্ধতির একটি স্ট্যাটিক ক্লাস রয়েছে যা কেবল "পতাকা" এনামগুলিতে ব্যবহার করা। আমি এটিকে বাধা হিসাবে যুক্ত করতে পারি না ... সুতরাং এটি সম্ভব যে তাদের অন্যান্য এনাম ধরণের সাথেও ডাকা হবে। সেক্ষেত্রে আমি একটি ব্যতিক্রম ছুঁড়ে ফেলতে চাই, তবে কোনটি নিক্ষেপ করতে হবে তা আমি নিশ্চিত নই।

এই কংক্রিটটি তৈরি করতে, যদি আমার কাছে এরকম কিছু থাকে:

// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
    if (!IsFlags<T>()) // This method doesn't throw
    {
        throw new ???
    }
    // Normal work here
}

নিক্ষেপের সেরা ব্যতিক্রম কী? ArgumentExceptionলজিক্যাল শোনাচ্ছে, কিন্তু এটি একটি এর টাইপ যুক্তি বদলে একটি স্বাভাবিক যুক্তি, যা পারা সহজে দ্বিধায় পরে জিনিস। আমার নিজের TypeArgumentExceptionক্লাস চালু করা উচিত ? ব্যবহার করবেন InvalidOperationException? NotSupportedException? আর কিছু?

আমি বরং না যদি না তা পরিষ্কারভাবে করার অধিকার জিনিস এই জন্য আমার নিজের ব্যতিক্রম তৈরি করুন।


আমি আজ জেনেরিক পদ্ধতিটি লেখার ক্ষেত্রে হোঁচট খেয়েছি যেখানে ব্যবহারের ধরণের ক্ষেত্রে অতিরিক্ত প্রয়োজনীয়তা রয়েছে যা সীমাবদ্ধতার সাথে বর্ণনা করা যায় না। বিসিএলে ইতিমধ্যে কোনও ব্যতিক্রমের সন্ধান না পেয়ে আমি অবাক হয়েছি। তবে এই ঠিক দ্বিধাটি আমি একই প্রকল্পে কিছু দিন আগে একটি জেনেরিকের জন্যও মুখোমুখি হয়েছিল যা কেবলমাত্র একটি পতাকা বৈশিষ্ট্য নিয়ে কাজ করবে। ভুতুরে!
আন্দ্রেস জোলটান

উত্তর:


46

NotSupportedException স্পষ্টভাবে ফিট করে এমন শোনাচ্ছে তবে ডকুমেন্টেশনটি পরিষ্কারভাবে জানিয়েছে যে এটি অন্য উদ্দেশ্যে ব্যবহার করা উচিত। এমএসডিএন শ্রেণীর মন্তব্য থেকে:

বেস পদ্ধতিতে সমর্থিত নয় এমন প্রত্যাশা রয়েছে যে পরিবর্তে এই পদ্ধতিগুলি উত্পন্ন শ্রেণিতে প্রয়োগ করা হবে be উদ্ভূত শ্রেণিটি বেস শ্রেণীর থেকে কেবল পদ্ধতিগুলির একটি উপসেট বাস্তবায়ন করতে পারে এবং অসমর্থিত পদ্ধতিগুলির জন্য নোটসপোর্টড এক্সসেপশন নিক্ষেপ করতে পারে।

অবশ্যই, একটি উপায় রয়েছে যাতে NotSupportedExceptionস্পষ্টতই যথেষ্ট ভাল, বিশেষত এর সাধারণ জ্ঞানের অর্থ দেওয়া হয়। এটি বলার পরে, আমি ঠিক ঠিক কিনা তা নিশ্চিত নই।

আনসন্সট্রেন্ডড মেলোডি এর উদ্দেশ্য দেওয়া ...

জেনেরিক পদ্ধতি / শ্রেণীর সাথে এমন অনেক দরকারী জিনিস করা যেতে পারে যেখানে "T: enum" বা "T: প্রতিনিধি" - এর এক ধরণের সীমাবদ্ধতা রয়েছে - তবে দুর্ভাগ্যক্রমে সেগুলি # তে নিষিদ্ধ।

এই ইউটিলিটি লাইব্রেরি ইলডাস / ইলসাম ব্যবহার করে নিষেধাজ্ঞাগুলির চারপাশে কাজ করে ...

... দেখে মনে হচ্ছে Exceptionপ্রুফের অত্যধিক বোঝা থাকা সত্ত্বেও কাস্টম তৈরির আগে আমাদের অবশ্যই দেখা করতে হবে এমন কোনও নতুন হতে পারে ExceptionsInvalidTypeParameterExceptionলাইব্রেরি জুড়ে এর মতো কিছু কার্যকর হতে পারে (বা সম্ভবত না - এটি অবশ্যই একটি প্রান্তের মামলা, তাই না?)

ক্লায়েন্টদের কি এটি ছাত্রলীগের ব্যতিক্রম থেকে আলাদা করতে সক্ষম হবে? কখন কোনও ক্লায়েন্ট ভুল করে ভ্যানিলা ব্যবহার করে এটিকে কল করতে পারে enum? একটি কাস্টম ব্যতিক্রম ক্লাস লেখার সময় কোন কারণগুলিকে বিবেচনা করা উচিত , এর গ্রহণযোগ্য উত্তরের দ্বারা উত্থিত প্রশ্নগুলির উত্তর আপনি কীভাবে দেবেন ?


আসলে এটি কোড অভ্যন্তরীণ ব্যতিক্রমটিকে প্রথম স্থানে ফেলে দেওয়ার জন্য প্রায় লোভনীয়, কোড কন্ট্রাক্টস যেমন করে ... আমি বিশ্বাস করি না যে কারও এটি ধরা উচিত
জন স্কিটে

খুব খারাপ এটি শুধু নাল ফিরে করতে পারে না!
জেফ স্টার্নাল

25
আমি TypeArgumentException নিয়ে যাচ্ছি।
জন স্কিটি

ফ্রেমওয়ার্কে ব্যতিক্রম যুক্ত করার ক্ষেত্রে উচ্চমাত্রার "প্রমাণের বোঝা" থাকতে পারে, তবে কাস্টম ব্যতিক্রমগুলি সংজ্ঞায়িত করা উচিত নয়। আইকি-র মতো বিষয়গুলি InvalidOperationException, কারণ "ফু সংগ্রহের বারটিকে ইতিমধ্যে বিদ্যমান কিছু যুক্ত করতে বলে, সুতরাং বার আইওই নিক্ষেপ করে" এবং "ফু সংগ্রহের বারটিকে কিছু যুক্ত করতে বলে, তাই বার বোজকে কল করে যা আইওই নিক্ষেপ করে যদিও বার এটি আশা করে না" উভয় একই ব্যতিক্রম টাইপ নিক্ষেপ করবে; কোডটি যা প্রথম ধরার প্রত্যাশা করে তা পরবর্তীটির প্রত্যাশা করবে না। এটি বলা হয়ে গেছে ...
সুপারক্যাট

... আমি এখানে একটি ফ্রেমওয়ার্ক ব্যতিক্রমের পক্ষে যুক্তিটি কাস্টম ব্যতিক্রমের চেয়ে বেশি জোরালো মনে করব। এনএসইর সাধারণ প্রকৃতি হ'ল যখন কোনও বস্তুর জন্য সাধারণ প্রকার হিসাবে উল্লেখ করা হয় এবং নির্দিষ্ট কিছু ধরণের অবজেক্টের কোনওটি নয় তবে রেফারেন্স পয়েন্টগুলি কোনও ক্ষমতা সমর্থন করে, নির্দিষ্ট ধরণের ক্ষমতাকে ব্যবহার করার চেষ্টা করে এটি এনএসই নিক্ষেপ করা উচিত নয়। আমি Foo<T>তাদেরকে "জেনারেল টাইপ" হিসাবে বিবেচনা করব Foo<Bar>এবং সেই প্রসঙ্গে "নির্দিষ্ট ধরণের" হিসাবে বিবেচনা করব, যদিও তাদের মধ্যে "উত্তরাধিকার" সম্পর্ক নেই।
সুপারক্যাট

24

আমি নোটসপোর্টড এক্সসেপশন এড়াতে চাই। এই ব্যতিক্রম ফ্রেমওয়ার্কে ব্যবহৃত হয় যেখানে কোনও পদ্ধতি প্রয়োগ করা হয় না এবং এমন একটি সম্পত্তি রয়েছে যা নির্দেশ করে যে এই ধরণের অপারেশন সমর্থন করে না। এটি এখানে ফিট করে না

আমি মনে করি আপনি এখানে ফেলে দিতে পারেন অবৈধ অপেশনের ধারণাটি সবচেয়ে উপযুক্ত ব্যতিক্রম।


এনএসই সম্পর্কে মাথা উঁচু করার জন্য ধন্যবাদ। আপনার সহকর্মীদের কাছ থেকেও ইনপুটকে স্বাগত জানাই, বিটিডব্লু ...
জন স্কিটি

মুল বক্তব্যটি হ'ল, জনের যে কার্যকারিতা দরকার তা ছাত্রলীগে তেমন কিছুই ছিল না। সংকলকটি এটি ধরার কথা। আপনি যদি নোটসম্পোর্টড এক্সসেপশন থেকে "সম্পত্তি" প্রয়োজনীয়তা অপসারণ করেন তবে আপনি যে জিনিসগুলি উল্লেখ করেছেন (কেবলমাত্র পঠন সংগ্রহ হিসাবে) জোন ইস্যুর নিকটতম জিনিস।
মেহরদাদ আফশারি

এক পয়েন্ট - আমি একটি IsFlags পদ্ধতি আছে যা (এটা একটি পদ্ধতি জেনেরিক হতে হবে) সাজানোর যা নির্দেশ করে অপারেশন এই প্রকারটি সমর্থিত নয় এর ... তাই যে অর্থে এন এস ই উপযুক্ত হবে। অর্থাৎ কলার প্রথমে চেক করতে পারে
জন স্কিটি

@Jon: আমার মনে হয় এমনকি যদি আপনি এই ধরনের একটি সম্পত্তি না থাকে কিন্তু আপনার টাইপ সকল সদস্যদের মজ্জাগতভাবে সত্য যে উপর নির্ভর Tএকজন enumদিয়ে সাজানো Flags, এটা এন এস ই নিক্ষেপ করা বৈধ হবে।
মেহরদাদ আফশারি

1
@ জোন: StupidClrExceptionএকটি মজার নাম তোলে;)
মেহেরদাদ আফশারি

13

জেনেরিক প্রোগ্রামিংটি অবৈধ ধরণের পরামিতিগুলির জন্য রানটাইম এ ছুঁড়ে ফেলা উচিত নয়। এটি সংকলন করা উচিত নয়, আপনার একটি সংকলন সময় প্রয়োগকারী হওয়া উচিত। কী IsFlag<T>()রয়েছে তা আমি জানি না , তবে সম্ভবত আপনি এটিকে একটি টাইপ তৈরির চেষ্টা করতে পারেন, যেমন 'পতাকা' দিয়ে তৈরি করা সম্ভব। সম্ভবত কোনও traitsশ্রেণি সাহায্য করতে পারে।

হালনাগাদ

আপনার যদি অবশ্যই ফেলে দেওয়া হয় তবে আমি অবৈধ অপেশনের পক্ষে ভোট দেব। যুক্তিটি হ'ল জেনেরিক ধরণের প্যারামিটারগুলি রয়েছে এবং ত্রুটিগুলি (পদ্ধতি) পরামিতিগুলিকে আর্গুমেন্টএক্সেপশন হায়ারার্কির চারদিকে কেন্দ্র করে are যাইহোক, আর্গুমেন্টএক্সেপশন সম্পর্কিত সুপারিশটিতে বলা হয়েছে

যদি ব্যর্থতা নিজেরাই যুক্তিগুলিকে জড়িত না করে, তবে অবৈধ অপেশান এক্সসেপশন ব্যবহার করা উচিত।

সেখানে বিশ্বাসের অন্তত একটি লাফ রয়েছে, সেই পদ্ধতি পরামিতিগুলির সুপারিশগুলি জেনেরিক প্যারামিটারগুলিতে প্রয়োগ করতে হবে , তবে সিস্টেমএক্সেপশন হায়রাচি ইমোতে এর চেয়ে ভাল আর কিছু নেই।


1
না, সংকলনের সময় এটিকে সীমাবদ্ধ করার কোনও উপায় নেই। IsFlag<T>এনাম এটি [FlagsAttribute]প্রয়োগ করেছে কিনা তা নির্ধারণ করে এবং সিএলআরতে গুণাবলীর উপর ভিত্তি করে বাধা নেই। এটি একটি নিখুঁত বিশ্বে - বা এটিকে বাধা দেওয়ার মতো অন্য কোনও উপায় থাকতে পারে - তবে এই ক্ষেত্রে এটি কেবল কার্যকর হয় না :(
জোন স্কিট

(সাধারণ নীতির জন্য যদিও +1 - আমি এটি সীমাবদ্ধ করতে সক্ষম হতে চাই ))
জন স্কিটি

9

আপনি যা বলছেন তা আমি নটসপোর্টড এক্সসেপশন ব্যবহার করব। নির্দিষ্ট এনাম ছাড়া অন্য এনামগুলি সমর্থিত নয় । এটি অবশ্যই ব্যতিক্রম বার্তায় আরও স্পষ্টভাবে বলা হবে।


2
নোটসম্পোর্টড এক্সসেপশনটি ছাত্রলীগে খুব আলাদা উদ্দেশ্যে ব্যবহৃত হয়। এটি এখানে ফিট করে না। ব্লগস.এমএসডিএন
জারেপ্পার /

8

আমি সাথে যেতে হবে NotSupportedException। যদিও ArgumentExceptionসৌন্দর্য জরিমানা, এটা সত্যিই আশা করা হচ্ছে যখন একটি আর্গুমেন্ট একটি পদ্ধতি প্রেরণ অগ্রহণীয়। কোনও প্রকার আর্গুমেন্ট হ'ল প্রকৃত পদ্ধতির জন্য নয়, আপনি যে প্রকৃত পদ্ধতিতে কল করতে চান তার একটি নির্দিষ্ট বৈশিষ্ট্য।InvalidOperationExceptionআপনি যে ক্রিয়াকলাপটি করছেন তা যখন কিছু ক্ষেত্রে কার্যকর হতে পারে তবে বিশেষ পরিস্থিতিতে এটি গ্রহণযোগ্য নয় এমন সময় নিক্ষেপ করা উচিত।

NotSupportedExceptionযখন কোনও অপারেশন সহজাতভাবে অসমর্থিত হয় তখন ছোঁড়া হয়। উদাহরণস্বরূপ, কোনও ইন্টারফেস বাস্তবায়নের সময় যেখানে কোনও নির্দিষ্ট সদস্য কোনও শ্রেণীর জন্য বোঝায় না। এটি দেখতে একই রকম পরিস্থিতি বলে মনে হচ্ছে।


Mmm। এটি এখনও বেশ সঠিকভাবে অনুভব করে না তবে আমি মনে করি এটি এটি এর নিকটতম জিনিস হতে চলেছে।
জন স্কিটি

জন: এটি ঠিক মনে হচ্ছে না কারণ আমরা প্রাকৃতিকভাবেই এটি সংকলকটি ধরে নিয়ে আসার প্রত্যাশা করি।
মেহরদাদ আফশারি

হা. এটি একটি বিজোড় ধরণের প্রতিবন্ধকতা যা আমি প্রয়োগ করতে চাই কিন্তু তা করতে পারি না :)
জন স্কিটি

6

স্পষ্টতই, মাইক্রোসফ্ট তার ArgumentExceptionজন্য ব্যবহার করে, যেমন এক্সপ্রেশন.লাম্বা <> , এনাম। ট্রাই পার্স <> বা মার্শাল.গেটডেলিগেট ফাংশনপোয়েন্টার <> ব্যতিক্রম বিভাগে উদাহরণ হিসাবে প্রদর্শিত হয়েছে । আমি হয় (অনুসন্ধানের জন্য স্থানীয় সূত্র উল্লেখ সত্ত্বেও কোনো উদাহরণ অন্যথায় ইঙ্গিত খুঁজে পাইনি TDelegateএবং TEnum)।

সুতরাং, আমি মনে করি এটি নিরাপদ বলে মনে করি যে কমপক্ষে মাইক্রোসফ্ট কোডে ArgumentExceptionবেসিক ভেরিয়েবলগুলি বাদ দিয়ে অবৈধ জেনেরিক ধরণের আর্গুমেন্টের জন্য ব্যবহার করা একটি সাধারণ অভ্যাস । দেওয়া হয়েছে যে ডক্সে ব্যতিক্রম বর্ণনার মধ্যে সেগুলির মধ্যে বৈষম্য হয় না, এটি খুব বেশি পরিমাণেও নয়।

আশা করি এটি একবার এবং সর্বদা প্রশ্নের বিষয়গুলি স্থির করে।


ফ্রেমওয়ার্কের একটি উদাহরণ আমার পক্ষে যথেষ্ট নয়, না - আমি মনে করি যে জায়গাগুলির সংখ্যা এমএসকে অন্যান্য ক্ষেত্রে কম পছন্দ করেছে :) আমি TypeArgumentExceptionসেখান থেকে প্রাপ্ত হব না ArgumentException, কেবল কারণ টাইপ যুক্তি নিয়মিত নয় যুক্তি.
জন স্কিটি

1
"এমএস ধারাবাহিকভাবে এটি যা করে" এর নিরিখে এটি অবশ্যই আরও জোরালো। ডকুমেন্টেশনের সাথে ম্যাচ করার ক্ষেত্রে এটি আর জোরালো করে তোলে না ... এবং আমি জানি সি # দলে প্রচুর লোক রয়েছে যারা নিয়মিত যুক্তি এবং টাইপ যুক্তির মধ্যে পার্থক্য সম্পর্কে গভীরভাবে চিন্তা করেন :) তবে উদাহরণগুলির জন্য ধন্যবাদ - তারা খুব সহায়ক।
জন স্কিটি

@ জোন স্কিকেট: একটি সম্পাদনা করেছেন; এখন এটিতে বিভিন্ন এমএস লাইব্রেরি থেকে 3 টি উদাহরণ অন্তর্ভুক্ত রয়েছে, সমস্ত আর্গুমেন্টএক্সেপশন সহ নিক্ষিপ্ত হিসাবে নথিভুক্ত করা হয়েছে; সুতরাং এটি যদি একটি দুর্বল পছন্দ হয় তবে কমপক্ষে এটি একটি সামঞ্জস্যপূর্ণ দুর্বল পছন্দ। ;) আমি অনুমান করি যে মাইক্রোসফ্ট ধরে নিয়েছে যে নিয়মিত আর্গুমেন্ট এবং টাইপ আর্গুমেন্ট উভয় যুক্তি; এবং ব্যক্তিগতভাবে, আমি মনে করি যে এই ধরণের ধারণাটি যথেষ্ট যুক্তিসঙ্গত। ^^ '
এলিস

আহ, কিছুই নয়, আপনি ইতিমধ্যে এটি লক্ষ্য করেছেন বলে মনে হয়। আমি সাহায্য করতে পেরে আনন্দিত. ^^
এলিস

আমি মনে করি যে তাদের সাথে একই আচরণ করা যুক্তিসঙ্গত কিনা তা নিয়ে আমাদের একমত হতে হবে। প্রতিবিম্ব, বা ভাষার বিধি ইত্যাদির ক্ষেত্রে এগুলি অবশ্যই একই নয় ... এগুলি খুব আলাদাভাবে পরিচালনা করা হয় ।
জন স্কিটি


2

একটি কাস্টম তৈরি ব্যতিক্রম নিক্ষেপ সর্বদা যে কোনও ক্ষেত্রেই এটি সন্দেহজনক যেখানেই করা উচিত। এপিআই ব্যবহারকারীদের প্রয়োজন ছাড়াই একটি কাস্টম ব্যতিক্রম সর্বদা কাজ করবে। বিকাশকারী যদি সে যত্ন না করে তবে ব্যতিক্রম উভয় ধরণের ধরতে পারে, তবে বিকাশকারীকে যদি বিশেষ পরিচালনা করার প্রয়োজন হয় তবে তিনি এসএল হবেন।


এছাড়াও বিকাশকারীকে এক্সএমএল মন্তব্যে ফেলে দেওয়া সমস্ত ব্যতিক্রম নথি করা উচিত।
এরিক স্নাইডার

1

নোটসপোর্টড এক্সসেপশন থেকে উত্তরাধিকার সম্পর্কে কীভাবে। আমি @ মেহেরদাডের সাথে একমত হয়েছি যে এটি সর্বাধিক উপলব্ধি করে, আমি আপনার বক্তব্য শুনেছি যে এটি পুরোপুরি ফিট করে না বলে মনে হয়। সুতরাং নোটসম্পোর্টড এক্সসেপশন থেকে উত্তরাধিকারী হন এবং আপনার API এর বিরুদ্ধে কোডিং করা লোকেরা এখনও একটি নটসোপোর্টড এক্সসেপশন ধরতে পারে।


1

আমি সর্বদা কাস্টম ব্যতিক্রমগুলি লেখার বিষয়ে সতর্ক থাকি, নিখুঁতভাবে যে সেগুলি সবসময় পরিষ্কারভাবে নথিভুক্ত করা হয় না এবং সঠিক নাম না দেওয়া হলে বিভ্রান্তি সৃষ্টি করে।

এই ক্ষেত্রে পতাকা চেক ব্যর্থতার জন্য আমি একটি আর্গুমেন্টএক্সেপশন নিক্ষেপ করব। এটি আসলে অগ্রাধিকার নেমে এসেছে। কিছু কোডিং মান আমি দেখেছি যে কোন ধরণের ব্যতিক্রমকে এই জাতীয় দৃশ্যে ফেলে দেওয়া উচিত।

যদি ব্যবহারকারী এমন কোনও কিছুতে পাস করার চেষ্টা করছিলেন যা এনাম ছিল না তবে আমি একটি অবৈধ অপেশনের ধারণাটি নিক্ষেপ করব।

সম্পাদনা:

অন্যরা একটি আকর্ষণীয় বিষয় উত্থাপন করে যে এটি সমর্থিত নয়। একটি নটসোপোর্টড এক্সসেপশন নিয়ে আমার একমাত্র উদ্বেগ হ'ল সাধারণত যে ব্যতিক্রমগুলি "ডার্ক ম্যাটার" সিস্টেমে প্রবর্তিত হওয়ার পরে নিক্ষেপ হয়ে যায় বা অন্যভাবে বলতে হয়, "এই ইন্টারফেসে এই পদ্ধতিটি সিস্টেমে যেতে হবে, তবে আমরা জিতেছি সংস্করণ 2.4 অবধি এটি চালু করা হবে না "

আমি নোটসম্পোর্টড এক্সসেপশনগুলি লাইসেন্সিং ব্যতিক্রম হিসাবে নিক্ষেপ করতে দেখেছি "আপনি এই সফ্টওয়্যারটির ফ্রি সংস্করণটি চালাচ্ছেন, এই ফাংশনটি সমর্থিত নয়"।

সম্পাদনা 2:

আর একটি সম্ভাব্য:

System.ComponentModel.InvalidEnumArgumentException  

গনিতকারী অবৈধ আর্গুমেন্ট ব্যবহার করার সময় ছোঁড়া ব্যতিক্রম


আমি এটিকে এনাম হতে বাধ্য করবো (কিছু জিগারি পোকারির পরে) - এটি কেবলমাত্র আমি যে পতাকাগুলি নিয়ে উদ্বিগ্ন।
জন স্কিটি

আমি মনে করি those লাইসেন্সওয়ালা ছেলেরা LicensingExceptionউত্তরাধিকার সূত্রে প্রাপ্ত কোনও শ্রেণির উদাহরণ ফেলে দেওয়া উচিত InvalidOperationException
মেহরদাদ আফশারি

আমি মেহরাদাদকে সম্মত, ব্যতিক্রমগুলি দুর্ভাগ্যক্রমে সেই ক্ষেত্রগুলির মধ্যে একটি যেখানে ফ্রেমওয়ার্কে অনেক ধূসর রয়েছে। তবে আমি নিশ্চিত যে প্রচুর ভাষার ক্ষেত্রে এটি একই রকম। (বলছি না যে আমি ভিবি 6 এর রানটাইম ত্রুটি 13 এ ফিরে যাবো)
পিটার

1

আমি অবৈধ অপসারণের পক্ষেও ভোট দেব। ফ্রেমওয়ার্ক ডিজাইনের গাইডলাইন ২ য় এডের উপর ভিত্তি করে .NET ব্যতিক্রম থ্রোং গাইডলেন্সে আমি একটি (অসম্পূর্ণ) ফ্লোচার্ট করেছি কারও আগ্রহ থাকলে কিছুক্ষণ আগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.