/// <summary>
/// 泛型類
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public interface IClass<TEntity> where TEntity : class { }
public class Entity { }
public class ClassEntity
{
//如何知道這個Data的型別,是IClass
public IClass<Entity> Data { get; set; }
public string Str { get; set; }
}
class Program
{
static void Main(string[] args)
{
//如何判斷ClassEntity中哪些屬性是IClass的
var entityType = typeof(ClassEntity);
var props = entityType.GetProperties();
//下面是我自己的寫法,感覺有些麻煩,不知道有沒有簡單的辦法
foreach (var prop in props)
{
var typeArgs = prop.PropertyType.GenericTypeArguments;
if (typeArgs.Count() == 1)
{
var arg = typeArgs.Single();
var tableType = typeof(IClass<>).MakeGenericType(arg);
if (tableType.IsAssignableFrom(prop.PropertyType))
{
Console.WriteLine($"PropName={prop.Name}");
}
}
}
Console.ReadLine();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/235926.html
標籤:C#
上一篇:vs
