假設我有以下interface and implementing class:C#反射測試,如果成員是一個接口實現
public interface IInterface
{
string AMember { get; }
string OtherMember { get; }
}
public class Class : IInterface
{
public string OtherMember { get { return "other"; } }
public string AMember { get { return "class"; }}
string IInterface.AMember { get { return "explicit"; } }
}
現在,我得到通過反射的成員,想測試,如果他們是一個接口實現。
public class Program
{
public static void Main()
{
var inst = new Class();
var members = typeof(Class).GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach(var member in members)
{
object val;
try
{
val = member.GetValue(inst);
}
catch(MethodAccessException e)
{
val = "EXPLICIT";
}
Console.Out.WriteLine(string.Format("{0}: {1} is interface implementation? {2}", member.Name, val, false /*member.IsInterfaceImplementation*/));
}
}
}
如何測試成員是否實現了接口?
我想你會以相反的方式去做。首先檢查了'Class'從接口派生,然後檢查成員 – Nkosi
我想什麼是枚舉成員並檢查它是否是一個接口實現。如果接口是明確實現的,這是有問題的。 –