據PostSharp文檔,一方面繼承應該是中支持其他:PostSharp和方面繼承通過層次
參數或抽象的,虛擬或接口方法的返回值
但在我如果組合這些支持的元素,它似乎不支持繼承。我有這樣最少的代碼來重現問題:
public interface IData { }
public interface ITest
{
void DoSomething([Required] IData data);
}
public abstract class AbstractTest : ITest
{
public abstract void DoSomething(IData data);
}
public class Test : AbstractTest
{
public override void DoSomething(IData data)
{
throw new NotImplementedException();
}
}
建設這個代碼結尾:
PostSharp.Patterns.Contracts.RequiredAttribute「不能應用於 方法 」 PostSharpInheritance.AbstractTest.DoSomething (PostSharpInheritance.IData)@data」 ,因爲它是抽象的。
如果我擺脫interfac的Required
屬性e抽象方法彙編將成功。如果我在接口和抽象方法中都放置Required
屬性,我會得到相同的錯誤。
我該如何在接口上放置屬性(契約)而不放棄在實現該接口的類層次結構中使用抽象類的選項?