অন্তর্নির্মিত প্রকারের জন্য, আপনি টাইপকোড গণনা ব্যবহার করতে পারেন। দয়া করে নোট করুন যে গেটটাইপ () ধরণের ধীর, তবে বেশিরভাগ পরিস্থিতিতে সম্ভবত প্রাসঙ্গিক নয়।
switch (Type.GetTypeCode(someObject.GetType()))
{
case TypeCode.Boolean:
break;
case TypeCode.Byte:
break;
case TypeCode.Char:
break;
}
কাস্টম ধরণের জন্য, আপনি নিজের স্বীকৃতি তৈরি করতে পারেন এবং হয় একটি ইন্টারফেস বা বিমূর্ত সম্পত্তি বা পদ্ধতি সহ একটি বেস শ্রেণি ...
সম্পত্তির বিমূর্ত শ্রেণি প্রয়োগ
public enum FooTypes { FooFighter, AbbreviatedFool, Fubar, Fugu };
public abstract class Foo
{
public abstract FooTypes FooType { get; }
}
public class FooFighter : Foo
{
public override FooTypes FooType { get { return FooTypes.FooFighter; } }
}
পদ্ধতির বিমূর্ত শ্রেণি প্রয়োগ
public enum FooTypes { FooFighter, AbbreviatedFool, Fubar, Fugu };
public abstract class Foo
{
public abstract FooTypes GetFooType();
}
public class FooFighter : Foo
{
public override FooTypes GetFooType() { return FooTypes.FooFighter; }
}
সম্পত্তির ইন্টারফেস বাস্তবায়ন
public enum FooTypes { FooFighter, AbbreviatedFool, Fubar, Fugu };
public interface IFooType
{
FooTypes FooType { get; }
}
public class FooFighter : IFooType
{
public FooTypes FooType { get { return FooTypes.FooFighter; } }
}
পদ্ধতির ইন্টারফেস বাস্তবায়ন
public enum FooTypes { FooFighter, AbbreviatedFool, Fubar, Fugu };
public interface IFooType
{
FooTypes GetFooType();
}
public class FooFighter : IFooType
{
public FooTypes GetFooType() { return FooTypes.FooFighter; }
}
আমার এক সহকর্মী আমাকে এই সম্পর্কে কেবল বলেছেন: এটির সুবিধা রয়েছে যে আপনি এটি আক্ষরিক যে কোনও ধরণের অবজেক্টের জন্য ব্যবহার করতে পারবেন, কেবলমাত্র আপনি যা সংজ্ঞায়িত করেছেন তা নয়। এটি কিছুটা বড় এবং ধীর হওয়ার অসুবিধা রয়েছে।
প্রথমে এর মতো একটি স্ট্যাটিক শ্রেণি সংজ্ঞায়িত করুন:
public static class TypeEnumerator
{
public class TypeEnumeratorException : Exception
{
public Type unknownType { get; private set; }
public TypeEnumeratorException(Type unknownType) : base()
{
this.unknownType = unknownType;
}
}
public enum TypeEnumeratorTypes { _int, _string, _Foo, _TcpClient, };
private static Dictionary<Type, TypeEnumeratorTypes> typeDict;
static TypeEnumerator()
{
typeDict = new Dictionary<Type, TypeEnumeratorTypes>();
typeDict[typeof(int)] = TypeEnumeratorTypes._int;
typeDict[typeof(string)] = TypeEnumeratorTypes._string;
typeDict[typeof(Foo)] = TypeEnumeratorTypes._Foo;
typeDict[typeof(System.Net.Sockets.TcpClient)] = TypeEnumeratorTypes._TcpClient;
}
/// <summary>
/// Throws NullReferenceException and TypeEnumeratorException</summary>
/// <exception cref="System.NullReferenceException">NullReferenceException</exception>
/// <exception cref="MyProject.TypeEnumerator.TypeEnumeratorException">TypeEnumeratorException</exception>
public static TypeEnumeratorTypes EnumerateType(object theObject)
{
try
{
return typeDict[theObject.GetType()];
}
catch (KeyNotFoundException)
{
throw new TypeEnumeratorException(theObject.GetType());
}
}
}
এবং তারপরে আপনি এটি ব্যবহার করতে পারেন:
switch (TypeEnumerator.EnumerateType(someObject))
{
case TypeEnumerator.TypeEnumeratorTypes._int:
break;
case TypeEnumerator.TypeEnumeratorTypes._string:
break;
}