P. *_*ery 0 c# reflection .net-assembly
我有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 ){
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是强制外部类/结构实现特定的接口(不使用继承).我想将Vector3用作泛型类中的类型:
public class MyGeneric<T> where T: IComparable<T> {
T _value;
}
Run Code Online (Sandbox Code Playgroud)
上面的结构:Vector3没有实现IComparable,但是我想使用反射来实现接口,这样我就可以使用现有形式的外部类/结构(即使用继承的w/o).继承可能是必要的......
我可以扩展外部类,使其实现本地接口
当然,前提是外国人没有密封.(当然,可以访问本地项目,等等.)
// 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() { }
}
Run Code Online (Sandbox Code Playgroud)
在那里,根据需要D扩展F.B,并根据需要D实现IFooBar.请注意即使它在基类上也F.B.Foo符合合同义务IFooBar.
如果外国人被密封,那么你将不得不使用构成而不是继承.
但是,我同意评论者说这闻起来像XY问题.你能说出你真正想要解决的问题吗?因为可能有更好的方法来实现你想要的.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |