【发布时间】:2021-02-04 20:42:47
【问题描述】:
也许我在这个问题上停留在我的观点上。我只是想消除对演员表的需求(MyClass)。
var c = (MyClass)new MyClass { }.MyExtensionMethod();
MyClass 实现 IMyInferface
IMyInterface.cs
public interface IMyInterface<T>
where T : class
{
// props
}
MyInterfaceExtensions.cs
public static class MyInterfaceExtensions
{
public static T MyExtensionMethod<T>(this IMyInterface<T> item, Guid id)
{
item.CreatedTimestamp = DateTime.UtcNow;
item.MySecondExtMethod(id);
return (T)item;
}
}
我仍然在this IMyInterface<T> item 上收到错误“类型 T 必须是引用类型才能将其用作参数”。
【问题讨论】:
-
ITrackable<T>和IMyInteface<T>是什么关系? -
您还必须将
where T: class添加到您的扩展方法中。也就是说,如果您谈论的是相同的界面。不过,您的示例显示了不同的界面,这是疏忽还是故意? -
@PavelAnikhouski 我编辑了它。错过了这个。
-
@LasseV.Karlsen 错过了那个。是的,它是一样的。
-
在使用其他泛型类型时需要满足泛型约束。查看副本。
标签: c# .net generics .net-core extension-methods