【发布时间】:2011-12-18 16:55:29
【问题描述】:
注意:对于那些 SO 开发人员来说,MS Ajax javascript 库模拟类、接口、枚举和其他 OO 功能,但该语言不支持它。所以不要开始吹嘘 javascript 中没有类。
接口实现
/// <reference path="MicrosoftAjax.debug.js" />
Type.registerNamespace("Validators");
Validators.IValidate = function () {
throw Error.notImplemented("Interface IValidate must be implemented before invoke.");
};
Validators.IValidate.prototype = {
ErrorMessage: "",
IsValid: false,
Validate: function () {
throw Error.notImplemented("Class must provide a implementation for the method");
}
};
Validators.IValidate.registerInterface("Validators.IValidate");
说明:
为什么我要解释与问题无关的界面?我会解释的。上面的代码将创建一个接口IValidate,它模仿框架中的IValidator。那些Error.notImplemented代码的工作如下
- 不允许其他人这样做
new Validators.IValidate()(即没有实例) - 类实现接口时,
Validate()方法未实现时会报错
所以现在您一定已经了解了仿真是如何执行的。同样,我创建了一个类(实际上我想要一个抽象类,这就是我在这里的原因),像这样命名为BaseValidator
Validators.BaseValidator = function () {
throw Error.invalidOperation("Base validator is a abstract class. Inherit the class to work with it");
};
Validators.BaseValidator.prototype = {
ValidationProperty: function (propertyName) {
},
BackColor: function (hexCode) {
},
ControlToValidate: function (id) {
},
CssClass: function (css) {
},
Display: function (mode) {
},
Focus: function () {
}
};
Validators.BaseValidator.registerClass("Validators.BaseValidator", null, Validators.IValidate);
在最后一行你可以注意到它实现了接口(但不提供实现,因为它将由BaseValidator 类的子类提供)。当一个类实现接口,继承另一个类时,构造函数应该调用Validators.BaseValidator.initializeBase(this),这将初始化基类。现在遇到问题请仔细阅读
问题
Validators.RequiredFieldValidator = function () {
Validators.RequiredFieldValidator.initializeBase(this, []);
};
Validators.RequiredFieldValidator.prototype = {};
Validators.RequiredFieldValidator.registerClass("Validators.RequiredFieldValidator", Validators.BaseValidator);
RequiredFieldValidator 继承 BaseValidator 作为基类
在构造函数中调用
initializeBase(this)初始化基类BUT BaseClass 中的构造函数引发错误。
问题
我应该如何使用 Microsoft Asp.net Ajax 模拟一个抽象类
【问题讨论】:
-
@Raynos 上帝停止投票,您是否阅读了问题顶部的说明。 Microsoft Ajax 在这里 msdn.microsoft.com/en-us/library/bb397536.aspx 并且 Microsoft 支持它。我们没有其他方法可以在 asp.net 中实现 ajax。
-
“没有其他在 asp.net 中实现 ajax 的方法”。对不起什么?什么?听说过
XMLHTTPRequest吗?停止使用微软给你的无用垃圾。 -
@Deeptechtons ??人们一直在 ASP.NET 中使用各种框架进行 Ajax。你可以使用任何你喜欢的 JavaScript 技术;服务器框架不在乎。
-
@Pointy 和 Raynos 离题了。如果您可以有建设性,请提供一个答案,如果您只知道客户端库必须提供什么,请提供答案,谢谢
-
@Deeptechtons 不是主题。您认为您有问题并告诉您您的实际问题是使用“MS ajax 库”。使用像样的 ajax 实用程序,所有问题都会消失。
标签: javascript interface asp.net-ajax abstract-class