Giriş
IsDefined metodu
Örnek
Elimizde şöyle bir kod olsun
Diğer
Kalıtım
Custom Attribute tanımlamak için System.Attribute sınıfından kalıtırız. Attribute tanımlarken AttributeUsage Anotasyonu da kullanılabilir.
Örnek
Şöyle yaparız.
Her hangi bir tipin atrribute bilgisine GetCustomAttributes() ile erişiriz. Şöyle yaparız.
Örnek
Tek parametre alan Custom Attribute için şöyle kullanacaksak
Örnek
Custom Attribute için property alacaksa yani şöyle kullanacaksak
Elimizde bir enum olsun.
IsDefined metodu
Örnek
Elimizde şöyle bir kod olsun
class Thing
{
[QueryString]
public int Id {get; set;}
[QueryString]
public string Name {get; set;}
public object MetaData {get; set;}
}
Şöyle yaparız.public static string MyExtensionMethod(this object obj)
{
Type objType = obj.GetType();
// Get properties marked with `[QueryString]`
List<PropertyInfo> props = objType.GetProperties()
.Where(p => Attribute.IsDefined(p, typeof(QueryStringAttribute)))
.ToList();
...
}
Diğer
Kalıtım
Custom Attribute tanımlamak için System.Attribute sınıfından kalıtırız. Attribute tanımlarken AttributeUsage Anotasyonu da kullanılabilir.
Örnek
Şöyle yaparız.
public class FooAttribute : System.Attribute
{...}
Erişim
ÖrnekHer hangi bir tipin atrribute bilgisine GetCustomAttributes() ile erişiriz. Şöyle yaparız.
x.GetCustomAttributes<MyCustomAttribute>()
.Any(k => k.EnumType == enumType));
Constructor - Parametresiz Attribute
Custom Attribute için şöyle yaparız[Foo]
public class MyClass
{
}
public class FooAttribute : Attribute
{
public FoonAttribute()
{
...
}
}
Constructor - Tek Parametreli AttributeÖrnek
Tek parametre alan Custom Attribute için şöyle kullanacaksak
[Foo("hello")]
public class MyClass {}
string alan bir constructor sağlamamız gerekir. Şöyle yaparız.public FooAttribute(string name)
{...}
Property
Örnek
Custom Attribute için property alacaksa yani şöyle kullanacaksak
[Foo(SpecialName = "Bob")]
class MyClass {}
SpecialName alanını sağlamamız gerekir. Şöyle yaparız.public class FooAttribute : System.Attribute{
public string SpecialName {get;set;}
...
}
ÖrnekElimizde bir enum olsun.
public enum MyEnum
{
MyType1,
MyType2
}
Custom Attribute için şöyle yaparız.public class MyCustomAttribute : Attribute
{
public MyEnum EnumType { get; set; }
}
Bir sınıf ile kullanmak için şöyle yaparız.public class MyBaseClass
{
}
[MyCustomAttribute(EnumType = MyEnum.MyType1)]
public class MySubClass : MyBaseClass
{
}
Hiç yorum yok:
Yorum Gönder