我们正在构建一个内部应用程序,需要生成HTML文件以上传到eBay列表中.我们希望使用模板引擎根据我们预定义的数据库和静态字段生成HTML文件.模板还需要具有逻辑功能(if-then,foreach等).
我们已经看过T4并且它看起来很完美,但我们没有看到它是否具有在运行时使用的功能,因此用户可以创建T4模板,然后应用程序可以"编译"它并生成最终的HTML文件.这有可能,怎么样?
如果没有,是否还有其他我们应该关注的具有所有这些功能的框架?
我需要为我正在构建的程序编写一个会计例程,它将给出一个十进制的偶数除以整数.例如:
$143.13 / 5 =
28.62
28.62
28.63
28.63
28.63
Run Code Online (Sandbox Code Playgroud)
我在这里看过这篇文章:在c#中均匀划分,但似乎它只适用于整数除法.想知道这个问题的优雅解决方案吗?
这是我在代码中一直在努力解决的问题.假设我们有以下代码:
public class MyClass {
private string _myVariable;
public string MyVariable {
get { return _myVariable; }
set { _myVariable = value; }
}
public void MyMethod() {
string usingPrivateMember = _myVariable; // method A
string usingPublicProperty = MyVariable; // method B
}
}
Run Code Online (Sandbox Code Playgroud)
哪种方式更正确 - 方法A还是B?我总是对此感到不满.方法A似乎会快一点,因为它不需要在获取真实变量之前访问属性.但是,方法B更安全,因为如果MyVariable的getter添加了业务逻辑,即使没有当前的业务逻辑,也可以通过调用它来保证安全.
普遍的共识是什么?
所以我将Excel单元格的内部颜色设置为某个值,如下所示:
worksheet.Cells[1, 1].Interior.Color = 0xF1DCDB;
Run Code Online (Sandbox Code Playgroud)
但是,当我在Excel中打开电子表格时,我看到出来的颜色完全不同(在上面的例子中,结果电子表格中的颜色是0xDCDCEF).我尝试了几种不同的颜色,它总是改变它,我没有看到一种模式.
这有什么理由吗?我甚至尝试通过编写Color.FromArgb(241,220,219).ToArgb()来设置颜色,同样的事情发生了.
我有一个UI路由器定义类似这样(为简单起见修剪):
$stateProvider
.state('someState', {
resolve: {
model: ['modelService', 'info', function (modelService, info) {
return modelService.get(info.id).$promise;
}]
},
controller: 'SomeController'
});
Run Code Online (Sandbox Code Playgroud)
此someState状态正在使用依赖于该model解析的工厂/服务.它的定义是这样的,AngularJS会抛出一个未知的提供者:modelProvider < - model < - someService错误:
angular
.module('someModule')
.factory('someService', someService);
someService.$inject = ['model'];
function someService(model) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,model在此状态的控制器内使用相同的解决方案可以正常工作:
SomeController.$inject = ['model'];
function SomeController(model) { ... }
Run Code Online (Sandbox Code Playgroud)
所以我理解UI路由器正在推迟SomeController解决方案的DI ,这允许AngularJS不会抛出错误.但是,当把这个决心作为一个依赖时,怎么会发生同样的延迟someService呢?解析只能在控制器上工作吗?如果是这种情况,我如何在工厂/服务中使用解决方案?
我一直在阅读StackOverflow和其他网站关于最佳架构实践的文章,并且存在许多相互矛盾的想法和观点.
我最终确定了一种方法,但我很难确定放置EF对象的位置(DbContext,Fluent API,种子数据等).这是我目前拥有的:
ASP.NET MVC项目:实际的Web项目.包含标准视图,控制器和视图模型(在Models文件夹中).
域模型项目:包含定义数据库(域)对象的所有POCO类.目前,没有提及或引用任何EF对象.
服务层项目:包含每种类型的域对象的服务对象(例如,IProductService,IOrderService等).每个服务都引用像DbSets这样的EF对象并处理业务规则 - 例如,添加产品,获取产品,将产品附加到订单等.
所以问题是,在这个配置中,EF类会去哪里?最初我想在服务层,但这似乎没有意义.然后我想把它们放在域模型层中,但是它将域模型绑定到EF,它本质上是一个DAL/Repository.最后,我考虑为EF创建一个单独的DAL项目,但考虑到它可能有3-4个文件(DbContext和一些其他小文件),这似乎是一个巨大的浪费.
有人可以提供任何指导吗?
我已经查看了源代码,但没有找到任何东西(尽管我不擅长 IL),但是我想看看是否有一种方法可以为 Dapper 提供一个类实例,而不是总是实例化一个新的实例。这样做的原因是我们有时可能会对两个不同的存储过程进行两次单独的调用——一个返回“实体”的一些列,另一个返回其他列。然而,第二次查询不是使用我们在第一次调用中收到的实体,而是获得本质上相同实体的两个实例。Dapper 最好使用现有的实体类并将查询结果映射到该现有类。
有没有办法拦截 Dapper 的类实例化,以便在需要时为其提供现有实例?
我的印象是使用Task的ContinueWith方法和UI上下文允许对UI元素执行操作而不会导致跨线程异常.但是,在运行以下代码时,我仍然遇到异常:
var context = TaskScheduler.FromCurrentSynchronizationContext();
Task<SomeResultClass>.Factory.StartNew(SomeWorkMethod).ContinueWith((t) =>
{
myListControl.Add(t.Result); // <-- this causes an exception
}, context);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
c# ×7
.net ×3
accounting ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
dapper ×1
division ×1
excel ×1
excel-vba ×1
interop ×1
javascript ×1
orm ×1
properties ×1
t4 ×1
task ×1
templates ×1
variables ×1
vba ×1