আমার কাছে যদি কোনও পদ্ধতি স্বাক্ষর থাকে
public string myMethod<T>( ... )
আমি কীভাবে পদ্ধতির অভ্যন্তরে টাইপ আর্গুমেন্ট হিসাবে টাইপটির নাম পেতে পারি? আমি এর মতো কিছু করতে চাই typeof(T).FullName, তবে এটি আসলে কাজ করে ...
আমার কাছে যদি কোনও পদ্ধতি স্বাক্ষর থাকে
public string myMethod<T>( ... )
আমি কীভাবে পদ্ধতির অভ্যন্তরে টাইপ আর্গুমেন্ট হিসাবে টাইপটির নাম পেতে পারি? আমি এর মতো কিছু করতে চাই typeof(T).FullName, তবে এটি আসলে কাজ করে ...
উত্তর:
আপনার কোড কাজ করা উচিত। typeof(T).FullNameপুরোপুরি বৈধ। এটি একটি সম্পূর্ণ সংকলন, কার্যকারী প্রোগ্রাম:
using System;
class Program
{
public static string MyMethod<T>()
{
return typeof(T).FullName;
}
static void Main(string[] args)
{
Console.WriteLine(MyMethod<int>());
Console.ReadKey();
}
}
উপরের প্রিন্টগুলি চালানো (আশানুরূপ হিসাবে):
System.Int32
<int?>" যদি তাই হয় তবে এটি কার্যকর হয় তবে আপনি System.Nullable<int>(পুরো নাম সিনট্যাক্সে) পান যা আপনি প্রত্যাশা করতেন ...
nameof(T)এবং typeof(T).Nameএকই কাজটি করব তাই এটি কেবল আমাকে সহায়তা করেছিল । সক্রিয় আউট nameof(T)মাত্র আয় T।
typeof(T).Nameএবং typeof(T).FullNameআমার জন্য কাজ করছে। আমি আর্গুমেন্ট হিসাবে টাইপটি পাস করি।
ধরে নিই যে আপনার কাছে কোনও টি উপলক্ষ্য রয়েছে, এটি অন্য কোনও ধরণের চেয়ে আলাদা নয়।
var t = new T();
var name = t.GetType().FullName;
typeof(T).FullNameকাজ করা উচিত । পরিবর্তে কি ঘটছে?