读书人

求思路大伙儿可以给点意见

发布时间: 2013-01-11 11:57:35 作者: rapoo

求思路,大家可以给点意见
有3个类 A类UI B类 C类接口 D类继承C类的接口并实现

B类通过ID反射了D类并转换(IGeneric)接口



IGeneric IObj = (IGeneric)Assembly.Load("SocketMethod").CreateInstance("SocketMethod." + Msg.ToString());



现在问题是D类有一些委托事件。A类UI要绑定(也就是要获得)D类有的有委托事件有的没有,A类怎么才可以解决,不能用静态事件
[解决办法]
mi.MemberType不明确是什么意思?
其实上面例子已经很清楚了啊,我再给你改改吧,你运行一下看看,D1有事件,D2无事件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SocketMethod
{
class Program
{

static void Main(string[] args)
{
// IGeneric IObj = (IGeneric)System.Reflection.Assembly.Load("SocketMethod").CreateInstance("SocketMethod." + Msg.ToString());

A a = new A();
if (a.Check("D1"))
Console.WriteLine("D1有事件");
else
Console.WriteLine("D1无事件");

if (a.Check("D2"))
Console.WriteLine("D2有事件");
else
Console.WriteLine("D2无事件");

}

}

public class A
{
public bool Check(string Msg)
{
IGeneric IObj = (IGeneric)System.Reflection.Assembly.Load("SocketMethod").CreateInstance("SocketMethod." + Msg.ToString());

System.Reflection.MemberInfo[] mis = IObj.GetType().GetMembers();
foreach (System.Reflection.MemberInfo mi in mis)
{
switch (mi.MemberType)
{
case System.Reflection.MemberTypes.Event:
//Console.WriteLine("有事件定义!");
//break;


return true;
case System.Reflection.MemberTypes.NestedType:
//Console.WriteLine("有委托定义!");
//break;
return true;
}
}

return false;
}


}

public interface IGeneric
{
}

//有事件
public class D1 : IGeneric
{
public delegate void EventHandler();
public event EventHandler Click;
}

//无事件
public class D2 : IGeneric
{
public void func()
{
}
}
}

读书人网 >C#

热点推荐