抱歉,如果这是重复的,我想是的,但我没有找到任何东西.我可能找错人了.

public interface IMyThingA {}
public class A : IMyThingA {}

interface IMyThingB {
    IMyThingA SomeThingA { get; set; }
}

public class B : IMyThingB {     // B does not implement interface member 'IMyThingA.SomeThingA'
    public A SomeThingA;
}

在上面的代码中,我期望类B能够使用一个实现预期接口(IMyThingA)的类,但显然我错了.有没有一种方法可以让这样的模式发挥作用?

推荐答案

您可以使用泛型和type constraint来做到这一点.例如:

public interface IMyThingA { }
public class A : IMyThingA { }

interface IMyThingB<T> where T : IMyThingA
{
    T SomeThingA { get; set; }
}

public class B : IMyThingB<A>
{     
    public A SomeThingA { get; set;}
}

Csharp相关问答推荐

注册通用工厂的C# Dep注入

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

Blazor Foreach仅渲染最后一种 colored颜色

需要在重新启动ApplicartionPool或IIS后启动/唤醒API的帮助

获取具有AutoFaces的所有IOptions对象的集合

MigraDoc文档

C#和ASP.NET核心标识:提高GetUserAsync调用的性能

反序列化私有成员

正在寻找新的.NET8 Blazor Web应用程序.如何将.js添加到.razor页面?

源代码生成器项目使用`dotnet build`编译,而不是在Visual Studio中编译?

MudBlazor Textfield已禁用,但其验证工作正常

在等待OnGetAsync时打开Razor Page显示微调器

Azure函数正在返回值列表,但该列表在Chrome中显示为空

如何在C#控制台应用程序中获取用户输入并将其作为订单项目进行处理?

如何在C# WinForm控件中使用Windows 10/11的黑暗主题?

使用C#代码和SQL SERVER中的相同证书签名会产生不同的结果

使用Try-Catch-Finally为API端点处理代码--有什么缺点?

如何在.NET8中使用Blazor Web App(WebAssembly)托管服务器端控制器?

我什么时候不应该在Dispose中调用EgSuppressFinalize(This)?

身份验证中间件如何处理多个方案