【发布时间】:2013-11-29 05:35:30
【问题描述】:
我对这三个类有疑问。
在第一堂课中,我正在为常用方法的列表视图类进行扩展
在第二类中,我们放置一个由第一类调用的方法
这对以上两个类都很好,但在我的第三类中需要传递 T、M 值。 但我不明白如何做到这一点?
有人帮忙解决这个问题吗?
谢谢
一等
public class MyListView : ListView
{
public UserControl uc { get; set; }
internal MyLEvent<Type,Type> MyLEvnt { get; set; }
public MyListView()
{
PreviewKeyDown += new KeyEventHandler(MyListView_PreviewKeyDown);
}
private void MyListView_PreviewKeyDown(object sender,KeyEventArgs e)
{
ListView view = sender as ListView;
var item = view.SelectedItem;
if (item != null)
{
string str = item.GetType().Name;
if (e.Key == Key.Delete)
{
MyLEvnt.Method(item, "Delete");
}
else if (e.Key == Key.Enter)
{
MyLEvnt.Method(item, "Modify");
uc.GetType().GetProperty("Update").SetValue(uc, 1, null);
MethodInfo mi = uc.GetType().GetMethod("IClear");
mi.Invoke(uc, null);
}
}
}
}
二等
public class MyLEvent<T,M> where T : class where M : class
{
private M manager;
private T type;
public MyLEvent()
{
}
public object Method(object _view, string flog)
{
object retVal = null;
type = Activator.CreateInstance<T>();
manager = Activator.CreateInstance<M>();
if (flog == "Modify")
{
MethodInfo method = typeof(M).GetMethod("getData");
type = (T)method.Invoke(manager, new[] { _view });
}
else if (flog == "Set")
{
MethodInfo method = typeof(M).GetMethod("setDefault");
retVal = method.Invoke(manager, new[] { _view });
}
else
{
if (MyMessage.askDelete() == true)
{
PropertyClass.Properties(_view, type, 'U');
MethodInfo method = typeof(M).GetMethod("Delete");
retVal = method.Invoke(manager, new[] { type });
}
}
return retVal;
}
}
三级
public partial class SubASettings : UserControl
{
public SubASettings()
{
InitializeComponent();
MAILV.uc = this;
MAILV.MyLEvnt = new MyLEvent<typeof(InvMail), MailManager>();
Clear();
}
}
谢谢,
【问题讨论】:
-
MAILV.MyLEvnt = new MyLEvent
(); -
是的,我这样做了,但它的显示类型转换错误“不能隐式将 mailmanager 转换为 system.Type
-
什么是
MailManager? -
@Szymon 无关。他将他的领域声明为
MyLEvent<Type, Type>,这是根本问题。 -
MailManager 是我的 Customer 类,如何定义 MLEvent
的 1 类属性来调用 2 类。我想通过第二类将任何自定义类类型传递给第三类