c#扩展接口的属性(派生接口)

时间:2015-11-25 18:22:03

标签: c# inheritance interface custom-attributes

是否有一种方法可以将属性应用于接口,以便派生接口也获得属性?

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不会继承相同的属性。

问题:基接口的属性是否可以某种方式应用于派生(扩展)接口?如果是的话,如果不是,为什么不呢?你也可以就这个话题提出一些好文章吗?

0 个答案:

没有答案