【发布时间】:2010-08-25 22:16:56
【问题描述】:
我有一个实现接口的对象,然后我使用反射找到该对象。如何将对象投射到接口中,然后将其放入 List<IInterface> 中?
【问题讨论】:
-
发布一些代码并指出你被卡住的地方。
-
哦讽刺:问题标题就是答案正是
标签: c# object interface casting type-conversion
我有一个实现接口的对象,然后我使用反射找到该对象。如何将对象投射到接口中,然后将其放入 List<IInterface> 中?
【问题讨论】:
标签: c# object interface casting type-conversion
如果对象是实现接口的类型,则不需要强制转换。
IMyBehaviour subject = myObject;
如果myObject 的类型只是Object,那么你需要强制转换。我会这样做:
IMyBehaviour subject = myObject as IMyBehaviour;
如果myObject 没有实现给定的接口,你最终会得到subject 是null。在将其放入列表之前,您可能需要对其进行检查。
【讨论】:
public interface IFoo { }
public class Foo : IFoo {}
private SomeMethod(object obj)
{
var list = new List<IFoo>();
var foo = obj as IFoo;
if (foo != null)
{
list.Add(foo);
}
}
【讨论】:
这是一个函数
将对象投射到接口中,然后将其放入列表中
public void CastAndAdd(object objThatImplementsMyInterface, IList<IMyInterface> theList)
{
theList.Add((IMyInterface)objThatImplementsMyInterface);
}
我的意思是,如果您已经找到该对象并拥有该列表,那么这是非常基本的。只需将IMyInterface 替换为您使用的任何接口即可。
或根据您的特定代码对此进行概括。
【讨论】: