मैं इस तरह एक सामान्य इंटरफ़ेस मिला:एक सामान्य इंटरफ़ेस का प्रकार प्राप्त करें?
public interface IResourceDataType<T>
{
void SetResourceValue(T resValue);
}
तब मैं इस वर्ग है कि मेरी इंटरफ़ेस लागू करता है:
public class MyFont : IResourceDataType<System.Drawing.Font>
{
//Ctor + SetResourceValue + ...
}
और अंत में मैं एक मिल गया:
var MyType = typeof(MyFont);
मैं, अब , System.Drawing.Font
प्राप्त करना चाहते हैं MyType से टाइप करें! पल में, मैं इस कोड है:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
//If test is OK
}
लेकिन मैं यहां अपने प्रकार "निकालने" के लिए प्रबंधन नहीं है ... मैं GetGenericArguments()
और अन्य बातों के साथ चीजों की एक जोड़ी की कोशिश की लेकिन वे या तो डॉन ' टी संकलित या एक शून्य मूल्य/सूची वापस ... मुझे क्या करना है?
संपादित करें:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
foreach (Type type in MyType.GetInterfaces())
{
if (type.IsGenericType)
Type genericType = type.GetGenericArguments()[0];
}
}
}
क्या आपने यह पोस्ट देखा है: http://stackoverflow.com/questions/557340/c-sharp-generic-list-t-how-to-get-the-type-of-t –
हाँ, और एक जोड़े किसी और के, वे मेरे प्रश्न का उत्तर नहीं देते ... मेरी भावना यह है कि मुझे GetInterfaces() का उपयोग करना है और कुछ अन्य चीजें करना है, मैं वास्तव में इसे आजमा रहा हूं! –