C# 对象作为接口
我得到了一个实现接口的对象,然后我使用反射找到该对象。如何将对象强制转换到接口中,然后将其放置到C# 对象作为接口,c#,object,interface,casting,type-conversion,C#,Object,Interface,Casting,Type Conversion,我得到了一个实现接口的对象,然后我使用反射找到该对象。如何将对象强制转换到接口中,然后将其放置到列表中?如果对象属于实现接口的类型,则无需强制转换该对象 IMyBehaviour subject = myObject; 如果myObject的类型只是Object,则需要强制转换。我会这样做: IMyBehaviour subject = myObject as IMyBehaviour; 如果myObject没有实现给定的接口,那么subject将变成null。在将其放入列表之前,您可能需要
列表中?如果对象属于实现接口的类型,则无需强制转换该对象
IMyBehaviour subject = myObject;
如果myObject
的类型只是Object
,则需要强制转换。我会这样做:
IMyBehaviour subject = myObject as IMyBehaviour;
如果myObject
没有实现给定的接口,那么subject
将变成null
。在将其放入列表之前,您可能需要检查它。这里有一个函数
将对象强制转换到接口中,然后将其放入列表中
public void CastAndAdd(对象对象对象实现接口,IList列表)
{
添加((IMyInterface)对象以实现IMyInterface);
}
我的意思是,如果你已经找到了对象并有了列表,这是非常基本的。只要用您正在使用的任何接口替换IMyInterface
或者根据您的特定代码对此进行概括。公共接口IFoo{}
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);
}
}
公共类Foo:IFoo{}
私有方法(对象obj)
{
var list=新列表();
var foo=obj作为IFoo;
如果(foo!=null)
{
添加(foo);
}
}
发布一些代码并指出你的困境。哦,讽刺的是:问题标题是正确的答案,或者如果你有一个foo:var list=new list(foo.ToArray())类型的列表foo;
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);
}
}