2015-07-31 3 views
1

Я хотел бы получить атрибут Sqlite Table из моего класса.Как получить атрибут Sqlite Table из класса?

У меня есть метод, чтобы проверить, если таблица существует с here:

var info = database.Connection.GetTableInfo(typeof(Customer).Name); 
if (info.Any()) 
{ 
    //do stuff with table 
} 

где Customer является:

[Table("Customer")] 
public class Customer 
{ 
    //class stuff 
} 

Теперь мой метод будет работать хорошо, как это, но я хотел бы связать это вместо атрибута Table, а не для имени класса. Я буду менять имя таблицы в будущем.

Как мне получить атрибут Table из моего класса?

Ps. Я использую PCL (Portable Class Library)

ответ

2

Получил его. Просто нужно было использовать метод GetCustomAttributes на Type и указать тип Атрибута, который я искал. Так он стал:

string tableName = typeof(Customer).Name; 
var customAttributes = typeof(Customer).GetCustomAttributes(typeof(SQLite.Net.Attributes.TableAttribute),false); 
if (customAttributes.Count() > 0) 
{ 
    tableName = (customAttributes.First() as SQLite.Net.Attributes.TableAttribute).Name; 
} 
1

Вот решение для PCL:

using System.Reflection; 

string tableName = typeof(MyClass).Name; 
var customAttributes = typeof(MyClass).GetTypeInfo().GetCustomAttributes<SQLite.Net.Attributes.TableAttribute>(); 
if(customAttributes.Count() > 0) 
{ 
    tableName = customAttributes.First().Name; 
} 

Source

Смежные вопросы