C# 从另一个项目重写方法

C# 从另一个项目重写方法,c#,asp.net,C#,Asp.net,我的解决方案中有一个网站和一个数据类项目 数据类被引用到网站 现在我想将方法a从数据类重写到网站 我认为这是可能的,因为编译后的数据类是网站中的dll 我的数据类: public partial class forInherit { public virtual int getUserID() { return 0; } } public partial class logFunctions : forInherit { } 和我的网站: public

我的解决方案中有一个网站和一个数据类项目
数据类被引用到网站
现在我想将方法a从数据类重写到网站
我认为这是可能的,因为编译后的数据类是网站中的dll

我的数据类:

public partial class forInherit
{
    public virtual int getUserID()
    {
        return 0;
    }
}

public partial class logFunctions : forInherit
{
}
和我的网站:

public partial class logFunctions
{
    public override int getUserID()
    {
    }
}
但我的错误是


如果部分类定义的命名空间相同且在同一程序集中定义,则找不到合适的方法来重写部分类定义。
在您的情况下,这两个标准都不满足

如果我正确理解了您的意图,那么您希望让数据类的使用者能够在仍然使用数据类项目中的类
logFunctions
的同时更改
getUserID()
方法的行为

您可以通过几种方法来实现这一点,其中一种非常简单的方法是为
logFunctions
提供一个委托,在调用
getUserID()
时调用该委托。另一种可能是引入一个传递给
logFunctions
的接口

第一个选项的示例:

在数据项目中:

public class forInherit
{
    public virtual int getUserID()
    {
        return 0;
    }
}

public class logFunctions : forInherit
{
    public Func<int> GetUserIDDelegate { get; set; }

    public override int getUserID()
    {
        if(GetUserIDDelegate == null)
            return 0;
        return GetUserIDDelegate();
    }
}

网站中的
logFunction
类需要继承数据类项目中的
forInherit


虽然您的
logFunction
类都是
partial
类,但它们都在不同的项目中,可能还有名称空间(您没有指定)。因此,它们都只按名称相关,而不按编译器相关

Partial用于在源文件之间拆分,而不是在项目之间拆分。我希望在我的网站中为我的数据类使用一个属性值。实际上,我无法在我的数据类中访问此属性。因此,我希望在网站中重写它以返回属性值
logFunctionsInstance.GetUserIDDelegate = () => { return 1; };