是否有其他方法可以更改界面的显示名称? 编译器告诉DisplayName属性仅对类
有效t_train.transpose()
t_test.transpose()
答案 0 :(得分:1)
问题在于DisplayNameAttribute
的{{1}}中有AttributeTargets
,因此无法将其应用于接口。
可能没有特定的设计原因,只是从未使用过,因此从未考虑过。
最简单的解决方案是扩展属性并应用您自己的Class | Method | Property | Event
。
AttributeTargets
此方法的好处是您可以像“ [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event)]
public class MyDisplayNameAttribute : System.ComponentModel.DisplayNameAttribute
{
public MyDisplayNameAttribute(string name) : base (name) { }
}
[MyDisplayName("NewName")]
interface IMyInterface { }
”一样检索它:
DisplayNameAttribute
答案 1 :(得分:0)
没有属性不能应用于接口。这是有效属性目标的列表
您可以创建一个抽象类,其中所有成员都是抽象的。在某种程度上,这将与具有属性的接口相同。但是,使用抽象类代替接口还会影响到应用程序的体系结构。