![](/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.