이 세 클래스에 문제가 있습니다. 첫 번째 클래스에서T 타입 값을 전달하는 방법
내가 두 번째 클래스에서 일반적인 방법
에 대한 목록보기 클래스 확장하고있어 우리는
이 두 클래스 이상하지만 세 번째 클래스 괜찮는 1 등석에 의해 호출있어 하나의 방법을 넣어 T, M 값을 통과해야합니다. 하지만이 작업을 수행하는 방법을 이해하지 못합니까?
아무도이 문제에 도움이 되셨습니까?
는1 급
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);
}
}
}
}
2 급
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;
}
}
3 급
주셔서 감사합니다public class MyLEvent<T,M> where T : class where M : class
{
...
}
이 ... 적절한 유형의 매개 변수를 제공 할 때 구체적인 유형를 만드는 데 사용되는 제네릭 형식을 정의
는
MAILV.MyLEvnt = 새로운 MyLEvent(); –
예,하지만 그 쇼 형식 변환 오류 "mailmanager를 system.Type으로 변환 할 수 없습니다. –
MailManager는 무엇입니까? – Szymon