我的解决方案和数据类项目中有一个网站
数据类引用到网站
现在我想要从数据类到网站的覆盖方法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()
{
}
}
但我的错误是
找不到合适的方法来覆盖
答案 0 :(得分:2)
如果部分类定义的名称空间相同并且它们在同一个程序集中定义,则部分类定义仅定义相同的类。
在您的情况下,这两个标准都没有达到。
如果我理解您的意图,您希望为数据类的使用者提供更改getUserID()
方法行为的可能性,同时仍然使用数据类项目中的类logFunctions
。 / p>
您可以通过多种方式实现此目的,一个非常简单的方法是给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();
}
}
在您的网络项目中:
logFunctionsInstance.GetUserIDDelegate = () => { return 1; };
答案 1 :(得分:0)
网站中的logFunction
类需要继承数据类项目中的forInherit
类。
虽然你的logFunction
类都是partial
,但它们位于不同的项目中,可能还有名称空间(你没有指定。)因此,两者只与名称有关,而与编译器无关。