是否有一种方法可以将属性应用于接口,以便派生接口也获得属性?
using System;
namespace Attributes
{
class Program
{
static void Main(string[] args)
{
GetAttributes<IBaseInterface>(); // Writes Hello World! to console
GetAttributes<IModuleInterface>(); // Doesnt get the MyAttribute
Console.ReadKey();
}
static void GetAttributes<T>()
{
var a = typeof(T).GetCustomAttributes(typeof(MyAttribute), true);
if (a.Length > 0)
Console.WriteLine((a[0] as MyAttribute).Abc);
}
}
[AttributeUsage(AttributeTargets.Interface, Inherited = true)]
public class MyAttribute : System.Attribute
{
public string Abc;
}
[MyAttribute(Abc = "Hello World!")]
public interface IBaseInterface
{
}
public interface IModuleInterface : IBaseInterface
{
}
}
IBaseInterface具有MyAttribute,但派生的IModuleInterface不会继承相同的属性。
问题:基接口的属性是否可以某种方式应用于派生(扩展)接口?如果是的话,如果不是,为什么不呢?你也可以就这个话题提出一些好文章吗?