如何从类中获取Sqlite Table属性?

时间:2015-07-31 13:15:22

标签: c# sqlite class attributes

我想从我的班级获得一个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属性?

聚苯乙烯。我正在使用PCL(便携式类库)

2 个答案:

答案 0 :(得分:2)

知道了。只需要在Type上使用GetCustomAttributes方法,并输入我正在寻找的属性类型。所以它变成了:

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 :(得分: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