Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自动属性作为方法参数_C#_.net_Methods_Properties_Parameters - Fatal编程技术网

C#自动属性作为方法参数

C#自动属性作为方法参数,c#,.net,methods,properties,parameters,C#,.net,Methods,Properties,Parameters,目前我有一个类,其中有许多自动属性类,如下所示 class SQLiteTables { public class tbl_account_codes { [PrimaryKey, AutoIncrement] public int ACCT_ID { get; set; } public string ACCT_CODE { get; set; } public string ACCT_DESC { get; se

目前我有一个类,其中有许多自动属性类,如下所示

class SQLiteTables
{
    public class tbl_account_codes
    {
        [PrimaryKey, AutoIncrement]
        public int ACCT_ID { get; set; }
        public string ACCT_CODE { get; set; }
        public string ACCT_DESC { get; set; }
        public string FUND_CODE { get; set; }
        public string ROR_FLAG { get; set; }
        public string OR_FLAG { get; set; }
        public string AR_FLAG { get; set; }
        public DateTime CREATED_DATE { get; set; }
        public string CREATED_BY { get; set; }
        public Nullable<DateTime> LAST_MODIFIED_DATE { get; set; }
        public string LAST_MODIFIED_BY { get; set; }
        public string ACCT_STATUS { get; set; }
    }

    public class tbl_ack_receipt
    {
        [PrimaryKey, AutoIncrement]
        public int AR_ID { get; set; }
        public string TPAY_RECEIPT_NO { get; set; }
        public string TPAY_SIG_ALGO { get; set; }
        public string BFNS_CODE { get; set; }
        public string TAXT_CODE { get; set; }
        public string ACCT_CODE { get; set; }
        public DateTime AR_PERIOD_COVERED { get; set; }
        public Nullable<int> AR_QUARTER { get; set; }
        public string AR_ASSESSMENT_NO { get; set; }
        public Nullable<DateTime> AR_DUE_DATE { get; set; }
        public string RFNP_CODE { get; set; }
        public string RFNP_OTHER { get; set; }
        public decimal AR_BASIC_TAX { get; set; }
        public decimal AR_SURCHARGE { get; set; }
        public decimal AR_INTEREST { get; set; }
        public decimal AR_TOTAL_DUE { get; set; }
        public decimal AR_TOTAL_PAID { get; set; }
        public string MPAY_CODE { get; set; }
        public string TYPEP_CODE { get; set; }
        public string AR_REMARKS { get; set; }
        public string AR_STATUS { get; set; }
        public decimal AR_COMPROMISE { get; set; }
    }

    public class tbl_agency_codes
    {
        [PrimaryKey, AutoIncrement]
        public int AGENCY_ID { get; set; }
        public string AGENCY_CODE { get; set; }
        public string AGENCY_DESC { get; set; }
        public DateTime CREATED_DATE { get; set; }
        public string CREATED_BY { get; set; }
        public Nullable<DateTime> LAST_MODIFIED_DATE { get; set; }
        public string LAST_MODIFIED_BY { get; set; }
        public string AGENCY_STATUS { get; set; }
    }
}
类SQLiteTables
{
公共类tbl_账户代码
{
[主密钥,自动增量]
公共int帐户ID{get;set;}
公共字符串帐户代码{get;set;}
公共字符串ACCT_DESC{get;set;}
公共字符串基金_代码{get;set;}
公共字符串ROR_标志{get;set;}
公共字符串或_标志{get;set;}
公共字符串AR_标志{get;set;}
创建的公共日期时间\u日期{get;set;}
由{get;set;}创建的公共字符串
公共可为空的上次修改日期{get;set;}
公共字符串上次由{get;set;}修改
公共字符串帐户状态{get;set;}
}
公共类待确认回执
{
[主密钥,自动增量]
公共int AR_ID{get;set;}
公共字符串TPAY_RECEIPT_NO{get;set;}
公共字符串TPAY_SIG_ALGO{get;set;}
公共字符串BFNS_代码{get;set;}
公共字符串TAXT_代码{get;set;}
公共字符串帐户代码{get;set;}
公共日期时间AR_期间{get;set;}
公共可为空的AR_四分之一{get;set;}
公共字符串AR_评估{get;set;}
公共可为空的应收账款到期日{get;set;}
公共字符串RFNP_代码{get;set;}
公共字符串RFNP_OTHER{get;set;}
公共十进制AR_基本税{get;set;}
公共十进制aru{get;set;}
公共十进制AR_兴趣{get;set;}
公共十进制AR_TOTAL_DUE{get;set;}
公共十进制AR_总计{get;set;}
公共字符串MPAY_代码{get;set;}
公共字符串TYPEP_代码{get;set;}
公共字符串aru注释{get;set;}
公共字符串AR_状态{get;set;}
公共十进制AR_折衷{get;set;}
}
公共类tbl_机构代码
{
[主密钥,自动增量]
公共int代理_ID{get;set;}
公共字符串代理_代码{get;set;}
公共字符串代理_DESC{get;set;}
创建的公共日期时间\u日期{get;set;}
由{get;set;}创建的公共字符串
公共可为空的上次修改日期{get;set;}
公共字符串上次由{get;set;}修改
公共字符串代理_状态{get;set;}
}
}
每次我想从类中检索特定属性时,我都需要这样做

var qry = conn.Table<Tbl.tbl_agency_codes>().Where(x => x.AGENCY_CODE.StartsWith("0605"));
var qry=conn.Table(),其中(x=>x.AGENCY_code.StartsWith(“0605”);
不用说,写几十篇这样的文章是非常令人厌烦的。所以我想知道是否有可能简化它,并制作一个类似这样的方法

private void ThisMethod<T>(SomeProperty SomeProperty)
{
    var qry = conn.Table<T>().Where(x => x.SomeProperty.StartsWith("Something"));
}
private void ThisMethod(SomeProperty SomeProperty)
{
var qry=conn.Table(),其中(x=>x.SomeProperty.StartsWith(“某物”);
}

这可能吗?

是的,但是有一些相当棘手的代码

您可以将属性的名称作为字符串传递并反映出来,例如
x.GetType().Properties.Where(p=>p.name==).GetValue(x)

或者,您可以构建lambda并在方法中传递它:

private void ThisMethod<T>(Expression<Func<T, bool>> PredicateExp)
{
   var qry = conn().Table<T>().Where(PredicateExp);
}
private void ThisMethod(表达式谓词eExp)
{
var qry=conn().Table().Where(谓词eExp);
}
用法:

ThisMethod<Tbl.tbl_agency_codes>(x => x.AGENCY_CODE.StartsWith("0605"));
this方法(x=>x.AGENCY_code.StartsWith(“0605”);

您可以使用Reflection您知道,在重命名某些属性时,您的代码将被无声地破坏吗?