自动实现的属性类作为参数

时间:2014-02-14 09:49:12

标签: c# automatic-properties method-parameters

我想将属性类引用传递给方法。 例如:

Class SQLiteTables
{
    public class tblPersonnel
    {
        public int PsnID { get; set; }
        public string PsnFirstName { get; set; }
        public string PsnMiddleName { get; set; }
        public string PsnLastName { get; set; }
    }
    public class tblSchedules
    {
        public int SchID { get; set; }
        public string SchDescription { get; set; }
        public DateTime SchStartDtm { get; set; }
        public DateTime SchEndDtm { get; set; }

    ...

    public class TableName
    {
        public int Field1 { get; set; }
        public string Field2 { get; set; }
        public string Field3 { get; set; }

        ...

        public string FieldN { get; set; }
    }
}

我想创建一个像这样的方法:

public void ThisMethod(PropertyClass propertyclassname)
{
        List<propertyclassname> TempList = dbConn.Table<propertyclassname>().ToList<propertyclassname>();
}

并像这样使用它:

ThisMethod(tblPersonnel);
ThisMethod(tblSchedules);

我正在努力避免为每个属性制作多个方法。我希望它是一种可重用的方法,但我似乎无法弄清楚如何。非常感谢提前!

3 个答案:

答案 0 :(得分:1)

你应该使用泛型:

public void ThisMethod<T>(T mySet) where T : MySetBaseClass
{
    ...
}

你想在方法中做什么以及谁在调用它?

答案 1 :(得分:0)

你想要实现的目标与你的实际逻辑不是那么容易,但如果你把它改成以下可能是你解决它

public abstract class PropertySetBase
     {
           public  abstract int Property_int1 { get; set; }
        public abstract string Property1 { get; set; }
        public abstract string Property2 { get; set; }
        public  abstract  string Property3 { get; set; }
     }   

头等舱

    public class PropertySet1:PropertySetBase
    {

    public override int  Property_int1
{
      get 
    { 

    }
      set 
    { 
    }
}

public override string  Property1
{
      get 
    { 
    }
      set 
    { 

    }
}

public override string  Property2
{
      get 
    { 
    }
      set 
    { 
    }
}

public override string  Property3
{
      get 
    {   
    }
      set 
    { 
    }
}
}

第二课

    public class PropertySet2:PropertySetBase
    {

public override int  Property_int1
{
      get 
    { 
    }
      set 
    { 
    }
}

public override string  Property1
{
      get 
    { 
    }
      set 
    { 
    }
}

public override string  Property2
{
      get 
    { 
    }
      set 
    { 
    }
}

public override string  Property3
{
      get 
    { 

    }
      set 
    { 

    }
}
}

以及如何编写您的方法以接受任何属性类

public void ThisMethod( PropertySetBase propertyclassname)
{

}

答案 2 :(得分:0)

我认为您想要重复使用属性集类型,并且可以使用IEnumerable

public class PropertySet
{
        public int Property0 { get; set; }
        public string Property1 { get; set; }
        public string Property2 { get; set; }
        public string Property3 { get; set; }
}

在方法中使用此类型的列表,以便在方法

中使用多个项目
public void ThisMethod(List<PropertySet> propertyclass)
{

}