获取对通用对象的引用<T>
Get reference to a generic object<T>
我的对象定义如下:
public class ModelList<T> : ModelBase, IModelList<T>, IModelList
where T : IModelListItem, new()
{
public void Method1()
{
// do work here!
}
}
public class Object1 : ModelListItem
{
}
public class Object2 : ModelListItem
{
}
public class Objects1: ModelList<Object1>, IModelList
{
}
public class Objects2: ModelList<Object2>, IModelList
{
}
在遥远的代码中的某个地方,我有一个方法可以接收 Objects1 或 Objects2 的集合对象。有没有办法从这里调用 Method1?
private void DoSomething(object O)
{
// O can be either Objects1 or Objects2
O.Method1();
}
Is there a way to call Method1 from here?
有:使你的远程方法通用:
private void DoSomething<T>(ModelList<T> o)
where T : IModelListItem, new()
{
o.Method1();
}
因为该方法根本不依赖于类型,您可以将 Method1()
添加到 IModelList
并将其传递给函数。
public interface IModelList
{
void Method1();
}
像
一样使用
private void DoSomething(IModelList o)
{
// o can be either Objects1 or Objects2 or anything else that implments IModelList
o.Method1();
}
我的对象定义如下:
public class ModelList<T> : ModelBase, IModelList<T>, IModelList
where T : IModelListItem, new()
{
public void Method1()
{
// do work here!
}
}
public class Object1 : ModelListItem
{
}
public class Object2 : ModelListItem
{
}
public class Objects1: ModelList<Object1>, IModelList
{
}
public class Objects2: ModelList<Object2>, IModelList
{
}
在遥远的代码中的某个地方,我有一个方法可以接收 Objects1 或 Objects2 的集合对象。有没有办法从这里调用 Method1?
private void DoSomething(object O)
{
// O can be either Objects1 or Objects2
O.Method1();
}
Is there a way to call Method1 from here?
有:使你的远程方法通用:
private void DoSomething<T>(ModelList<T> o)
where T : IModelListItem, new()
{
o.Method1();
}
因为该方法根本不依赖于类型,您可以将 Method1()
添加到 IModelList
并将其传递给函数。
public interface IModelList
{
void Method1();
}
像
一样使用private void DoSomething(IModelList o)
{
// o can be either Objects1 or Objects2 or anything else that implments IModelList
o.Method1();
}