小编Geo*_*ett的帖子

具有相同名称的非通用和通用类的不良做法?

令我惊讶的是我能够做到这一点:

public abstract class BaseComponent
{
    protected GameObject GameObject;

    internal BaseComponent(GameObject gameObject)
    {
        GameObject = gameObject;
    }
}

public abstract class BaseComponent<TComponent, TManager> : BaseComponent
where ...
{

}
Run Code Online (Sandbox Code Playgroud)
  1. 命名我的2个类是不一样的坏习惯?
  2. 在这种情况下是否有标准的命名约定?

c# language-agnostic class naming-conventions

3
推荐指数
1
解决办法
87
查看次数

从UI中通过lotusscript调用代理访问当前文档并显示消息框

我有一个代理,代码如下:

Sub Initialize
    MessageBox "AgentStart"
    Print "AgentStart"

    Dim ws As New NotesUIWorkspace
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim vItemsBySupplierSpec As NotesView
    Dim Doc As NotesDocument
    Dim DocsWithSameSupplierSpec As NotesDocumentCollection
    Dim MatchingDoc As NotesDocument
    Set Doc = ws.CurrentDocument.Document

    If Len(Doc.ItemSupplierSpecification(0)) > 0 Then
        ' Check that this supplier specification isn't use anywhere else.'
        Set db = s.CurrentDatabase
        Set vItemsBySupplierSpec = db.GetView("vItemsBySupplierSpec")

        Set DocsWithSameSupplierSpec = vItemsBySupplierSpec.GetAllDocumentsByKey(Doc.ItemSupplierSpecification(0), True)
        Set MatchingDoc = DocsWithSameSupplierSpec.GetFirstDocument

        Dim ItemsString As String

        ItemsString = "The …
Run Code Online (Sandbox Code Playgroud)

lotus-notes lotusscript agents

3
推荐指数
1
解决办法
5318
查看次数

创建一个泛型类池,在其中提供泛型参数并获取使用该参数的泛型对象

目标

我有一个通用类GenericClass<T>,我想池化实例。
我有兴趣看看是否可以获得语法:

MyGenericPool = new GenericPool<GenericClass>();
// Or maybe it's MyGenericPool = new GenericPool<GenericClass<>>();

GenericClass<TGenericParam> GenericClassInstance =
    MyGenericPool.Get<TGenericParam>();
Run Code Online (Sandbox Code Playgroud)

(我对泛型的理解是,不,我不能,别傻了,语法不存在/不起作用,但我对其他人的想法很感兴趣)。


展示我的作品

我有点怀疑,因为从我对类型的理解来看,从类型系统的角度来看,它们并没有真正相关GenericClass<string>GenericClass<int>

现在,我意识到我可以接近,即:

GenericClass<TGenericParam> GenericClassInstance =
    GenericPool.Get<GenericClass<TGenericParam>>();
Run Code Online (Sandbox Code Playgroud)

然后把它GenericPool存储在Dictionary<Type, ObjectPool<object>>某个地方。
我有兴趣看看是否可以避免这样做。我不想每次作为调用者只更改泛型类型参数时都必须指定泛型类型。我还希望能够强制(编译时)所有进入我的对象GenericObjectPool<T>都是一组通用类型(T<>)。


我认为问题源于无法将泛型类型参数视为泛型本身。如果我能做到这一点(我已经可以了吗?)那么也许像下面这样的东西可能会起作用:

public class GenericClassPool<TGeneric> where TGeneric : class<>
{
    private readonly Dictionary<Type, object> objectPools = new Dictionary<Type, object>();


    private void EnsureObjectPoolExists<TGenericParam>()
    {
        if (!objectPools.ContainsKey(typeof(TGenericParam)))
        {
            objectPools.Add(typeof(TGenericParam), new ObjectPool<TGeneric<TGenericParam>>(() => Activator.CreateInstance(typeof(TGeneric<TGenericParam>)) as TGeneric<TGenericParam>));
        }
    }

    private ObjectPool<TGeneric<TGenericParam>> …
Run Code Online (Sandbox Code Playgroud)

c# generics generic-type-argument object-pooling

3
推荐指数
1
解决办法
2102
查看次数

是否建议逃避关键字,例如@class

在c#中,您可以使用创建与关键字相同的变量@languagekeyword.

我的问题是,这什么时候有用?这些好处何时会超过缺点?

c# keyword

2
推荐指数
2
解决办法
460
查看次数

为什么我不能使用var声明一个字段

可能重复:
为什么类字段不能是var?

我想避免为局部变量输入类似字段的复杂/长类型定义.

我想知道为什么不能这样做?

public class Foo
{
    public var barField = new Dictionary<string, int>(); // Does not work

    public void Method()
    {
        var barLocal = new Dictionary<string, int>(); // Works
    }
}
Run Code Online (Sandbox Code Playgroud)

c# var static-typing

2
推荐指数
1
解决办法
430
查看次数

表现:Vector2 vs. x/y

我有一些旧的游戏代码,我正在移植到XNA.我的所有对象都使用x/y(float)和Vector2来描述各种位置等.

除了语法之外,有一个很好的基于性能的原因将我的旧x/y类型单位转换为Vector2,或者我可以只做一个直接端口而不必担心它?

c# performance xna

2
推荐指数
1
解决办法
541
查看次数

何时检查以及何时不检查ModelState.IsValid

我正在使用ASP.NET MVC2.
我喜欢如何注释我的模型的字段并检查ModelState.IsValid.

检查它的明显原因是在进行验证时,但是如果将新的验证规则应用于模型,是否应该始终检查它?
这样你就不会忘记/需要检查控制器是否检查IsValid.

在所有情况下都有一些理由不进行此检查吗?也许只是当控制器动作有副作用(DB写入等)?

c# asp.net-mvc asp.net-mvc-2

2
推荐指数
2
解决办法
530
查看次数

获得元素集合的各个高度

我有以下代码:

var posts = elementToAdd.find(".post");
posts.each(function(i, e) {
    var elementHeight = e.height() // BANG!
});
Run Code Online (Sandbox Code Playgroud)

帖子包含许多匹配的元素,我试图循环并根据每个元素的高度执行逻辑,但是单个元素没有height属性,那么我该如何解决这个问题呢?

javascript jquery

2
推荐指数
1
解决办法
65
查看次数

查找列表中的元素,这些元素一起累加到目标编号

假设我有一个列表:

List<int> _arr = new List<int> {1, 3, 4};
Run Code Online (Sandbox Code Playgroud)

而且是一个目标 4

我想回到{1, 3}作为1 + 3 = 4{4}作为4 = 4使用LINQ从给定的列表.

我怎么做?

c# linq

0
推荐指数
1
解决办法
2484
查看次数