繁体   English   中英

使用部分类中的方法

[英]Using a method from a partial class

所以我有这种方法:

public IList<IndicationProject> GetProjectsForSponsor(int sponsorId)
        {
            IList<IndicationProject> result = new List<IndicationProject>();

            IWspWB_IndicationGetProjectsForEntityResultSet tmpResultSet = ExecWspWB_IndicationGetProjectsForEntity(sponsorId);

            if (tmpResultSet.WspWB_IndicationGetProjectsForEntity1 != null)
            {
                foreach (WspWB_IndicationGetProjectsForEntity1LightDataObject ldo in tmpResultSet.WspWB_IndicationGetProjectsForEntity1)
                {
                    result.Add(
                        new IndicationProject()
                            .Named(NullConvert.From(ldo.Stp_name, null))
                            .IdentifiedBy(NullConvert.From(ldo.Stp_straight_through_processing_id, 0))
                        );
                }
            }

            return result;
        }

包含在此类中:

namespace Web.Data.Indications
{
    public partial class IndicationsDataTier
    {

我想在我的另一个类中使用该方法,如下所示:

IList<IndicationProject> oldList = Web.Data.Indications.IndicationsDataTier.GetProjectsForSponsor(entityId);

但是当我编译的时候我得到这个错误:

错误44非静态字段,方法或属性'Web.Data.Indications.IndicationsDataTier.GetProjectsForSponsor(int)'需要对象引用

您的方法是实例成员,但是您正在调用它,就好像它是静态的一样。

如果希望它是静态方法,则应添加static关键字:

public static IList<IndicationProject> GetProjectsForSponsor(int sponsorId)
{
     // ...
}

如果希望它成为实例方法,则应创建(或获取对它的引用)该类型的实例,然后在该实例上调用该方法:

using Web.Data.Indications;

// ...

IndicationsDataTier idt = new IndicationsDataTier();
IList<IndicationProject> oldList = idt.GetProjectsForSponsor(entityId);

您尝试通过类访问该方法,但是您需要通过该类的实例访问它,因为它不是静态方法。

指定方法的方法标头不包含static关键字。

您已声明该方法为非静态方法。

您将其作为类方法(MyClass.MyMethod)而不是实例方法(myVar.MyMethod)进行访问。

将声明更改为static以您自己的方式进行调用。

该方法不是静态的,因此您需要实际实例化IndicationsDataTier

您尚未将方法声明为静态方法,因此需要首先创建一个实例。 例如:

var oldList = new Web.Data.Indications.IndicationsDataTier();

oldList.GetProjectsForSponsor(int sponsorId);

通过阅读您的方法,看起来您可以将这些方法标记为静态。

如果IndicationsDataTier的构造函数是无参数的,则可以尝试:

IList<IndicationProject> oldList = (new Web.Data.Indications.IndicationsDataTier).GetProjectsForSponsor(entityId);

使用static修饰符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM