![](/img/trans.png)
[英]How can I have a class that implements an interface and inherits from an abstract class? (C# .NET 3.5)
[英]C#: Can I extend a foreign class such that it implements a local interface
我有2个程序集(国外和本地)。 无法修改外部部件。 我想扩展一个外部类,以便它现在将实现一个本地接口。 这在C#中可能吗?
编辑:我知道我可以执行以下操作:
// foreign.dll
namespace DX {
public struct Vector3 {
...
}
}
// local.dll
namespace MyDX {
public static class Extensions {
public static void MyExtensionMethod( this Vector3 vec, int index ){
...
}
}
}
我感兴趣的是强制外部类/结构实现特定接口(不使用继承)。 我想将Vector3用作通用类中的类型:
public class MyGeneric<T> where T: IComparable<T> {
T _value;
}
上面的结构:Vector3没有实现IComparable,但是我想使用反射来实现接口,以便我可以以其现有形式使用外部类/结构(即不使用继承)。 继承可能是必要的...
我可以扩展外部类以使其实现本地接口吗
当然可以,但前提是该外国类别未密封。 (当然,本地项目也可以访问,依此类推。)
// Foreign.DLL
namespace F
{
public class B
{
public void Foo() { }
}
}
// Local.DLL
interface IFooBar
{
void Foo();
void Bar();
}
class D : F.B, IFooBar
{
public void Bar() { }
}
在那里, D
根据需要扩展了FB
,并且D
根据需要实现了IFooBar
。 请注意,即使IFooBar
位于基类上,它也如何FBFoo
的合同义务。
如果外部类是密封的,那么您将不得不使用组合而不是继承。
但是,我同意评论员的说法,即闻起来像XY问题。 您能否更详细地说出您真正要解决的问题? 因为可能会有更好的方法来完成您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.